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

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

如果 RHEL 5 或其衍生版本中未设置 fs.file-max /etc/sysctl.conf,内核如何确定默认值?是否有用于fs.file-max根据系统 RAM 量设置值的公式?我检查了许多运行相同 OS 级别但具有不同硬件配置的随机 RHEL 服务器,并cat /proc/sys/fs/file-max在每个系统上显示不同的值。

答案1

我来回答我自己的问题: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 } 

相关内容