Size max files based on memory size
PATCH 1/1 Size max files based on memory size
Hi,
The default files_max settings of 8192 is rather low for many workloads. This patch changes it to be sized based on the available memory. It assumes file + inode + dentry are roughly 1K and will use upto 10% of the available memory for files_max.
Also removes two obsolete prototypes in the include file.
Patch for 2.5.3. Please consider applying.
Thanks,
-Andi
fs/dcache.c renamed from fs/dcache.c-FILESSZ +1 -0
@@ -1283,6 +1283,7 @@dcache_init (mempages);inode_init (mempages); +files_init (mempages);mnt_init (mempages);bdev_cache_init ();cdev_cache_init ();
fs/file_table.c renamed from fs/file_table.c-FILESSZ +14 -0
@@ -186,3 +186,17 @@file_list_unlock ();return 0 ; } + +void __init files_init (unsigned long mempages) +{ +int n; +/* 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 = n; +if (files_stat.max_files <NR_FILE ) + files_stat.max_files =NR_FILE ; +} +
include/linux/fs.h renamed from include/linux/fs.h-FILESSZ +1 -2
@@ -208,6 +208,7 @@extern void buffer_init (unsigned long );extern void inode_init (unsigned long );extern void mnt_init (unsigned long ); +extern void files_init (unsigned long );/* bh state bits */ enum bh_state_bits {
@@ -1475,8 +1476,6 @@ }return 0 ; } -unsigned long generate_cluster (kdev_t ,int b[],int ); -unsigned long generate_cluster_swab32 (kdev_t ,int b[],int );extern kdev_t ROOT_DEV ;extern char root_device_name[];