Как RHEL 5 (ядро Linux 2.6.18) определяет настройку fs.file-max по умолчанию?

Если fs.file-max не установлен в /etc/sysctl.conf на RHEL 5 или его производных, как ядро ​​определяет значение по умолчанию? Есть ли формула, используемая для установки fs.file-max значение в зависимости от объема системной памяти? Я проверил несколько случайных 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 } 
Другие вопросы по тегам