14

Linux システム (具体的には ubuntu 10.04) で使用できるファイル記述子の上限はいくつですか?

私は Ubuntu 10.04 (64 ビット) を使用しており、サーバーの CPU アーキテクチャは x86_64 で、クライアントの CPU アーキテクチャは i686 です。現在、fd-limit を 400000 に増やしていました。

  • 大きな番号を使用することで考えられる副作用は何ですか。ファイル記述子の?
  • いいえについてどうすれば知ることができますか。任意のプロセスで使用されるファイル記述子?

thnx

4

2 に答える 2

14

代わりに /proc/sys/fs/file-max を調べます。

最近の linux/Documentation/sysctl/fs.txt から:

file-max と file-nr:

カーネルはファイル ハンドルを動的に割り当てますが、まだ解放しません。

file-max の値は、Linux カーネルが割り当てるファイル ハンドルの最大数を示します。ファイル ハンドルが不足しているというエラー メッセージが多数表示される場合は、この制限を増やすことをお勧めします。

従来、file-nr の 3 つの値は、割り当てられたファイル ハンドルの数、割り当てられているが未使用のファイル ハンドルの数、およびファイル ハンドルの最大数を示していました。Linux 2.6 は、空きファイル ハンドルの数として常に 0 を報告します。これはエラーではなく、割り当てられたファイル ハンドルの数が、使用されているファイル ハンドルの数と正確に一致することを意味します。

file-max よりも多くのファイル記述子を割り当てようとすると、printk で報告されます。「VFS: file-max limit reached」を探します。

2.6 カーネルは経験則を使用してfile-max、システムのメモリ量に基づいて設定します。fs/file_table.c2.6 カーネルのスニペット:

/*
 * One file with associated inode and dcache is very roughly 1K.
 * Per default don't use more than 10% of our memory for files. 
 */ 

n = (mempages * (PAGE_SIZE / 1024)) / 10;
files_stat.max_files = max_t(unsigned long, n, NR_FILE);

files_stat.max_files設定ですfs.file-max。これは、RAM 1MB ごとに約 100 になります (10%)。

于 2012-10-19T09:12:24.153 に答える
4

各ファイル記述子はカーネル メモリの一部を占有するため、ある時点でそれを使い果たしてしまいます。そうは言っても、イベントベース (Linux では epoll) のサーバー アーキテクチャが使用されるサーバー展開では、最大 10 万個のファイル記述子が前代未聞ではありません。したがって、400k は完全に不合理ではありません。

2 番目の質問については、/proc/PID/fd/ または /proc/PID/fdinfo ディレクトリを参照してください。

于 2012-10-19T09:13:41.597 に答える