RHEL 5(Linux内核2.6.18)如何确定默认的fs.file-max设置?

如果在RHEL 5或其派生/etc/sysctl.conf未设置fs.file-max,那么内核如何确定缺省值? 是否有一个公式用于根据系统RAM的数量设置fs.file-max值? 我检查了许多运行相同操作系统级别但具有不同硬件configuration的随机RHEL服务器,并且cat /proc/sys/fs/file-max在每个系统上显示不同的值。

我会回答我自己的问题:Linux 2.6内核将打开的文件限制设置为可用内存的10%。

资料来源: http : //git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=fs/file_table.c

  488 void __init files_init(unsigned long mempages) 489 { 490 int n; 491 492 filp_cachep = kmem_cache_create("filp", sizeof(struct file), 0, 493 SLAB_HWCACHE_ALIGN | SLAB_PANIC, NULL); 494 495 /* 496 * One file with associated inode and dcache is very roughly 1K. 497 * Per default don't use more than 10% of our memory for files. 498 */ 499 500 n = (mempages * (PAGE_SIZE / 1024)) / 10; 501 files_stat.max_files = n; 502 if (files_stat.max_files < NR_FILE) 503 files_stat.max_files = NR_FILE; 504 files_defer_init(); 505 lg_lock_init(files_lglock); 506 percpu_counter_init(&nr_files, 0); 507 }