代わりに /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.c
2.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%)。