如果fs.file-max没有在/etc/sysctl.conf中设置在RHEL 5或其衍生物上,内核如何确定默认值?是否有公式用于根据系统内存的数量来设置fs.file-max值?我检查了许多运行相同操作系统级别的随机RHEL服务器,但是硬件配置不同,cat /proc/sys/fs/file-max在每个系统上显示了不同的值。
发布于 2010-10-21 13:48:34
我将回答我自己的问题:Linux2.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 } https://serverfault.com/questions/192313
复制相似问题