Messages in this thread Patch in this message | | | Date | Thu, 7 Feb 2002 02:23:10 +0100 | From | Andi Kleen <> | Subject | [PATCH] Automatic file-max sizing |
| |
The default for NR_FILES of 8192 is far too low for many workloads. This patch does dynamic sizing for it instead. It assumes file+inode+dentry are roughly 1K and will use upto 10% of the memory for it.
Also removes two obsolete prototypes.
Patch against 2.5.4pre1.
-Andi
--- linux-2.5.4pre1-work/fs/dcache.c-FILESSZ Tue Jan 15 17:53:31 2002 +++ linux-2.5.4pre1-work/fs/dcache.c Thu Feb 7 02:09:02 2002 @@ -1283,6 +1283,7 @@ dcache_init(mempages); inode_init(mempages); + files_init(mempages); mnt_init(mempages); bdev_cache_init(); cdev_cache_init(); --- linux-2.5.4pre1-work/fs/file_table.c-FILESSZ Mon Sep 17 22:16:30 2001 +++ linux-2.5.4pre1-work/fs/file_table.c Thu Feb 7 02:09:02 2002 @@ -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; +} + --- linux-2.5.4pre1-work/include/linux/fs.h-FILESSZ Thu Feb 7 01:46:26 2002 +++ linux-2.5.4pre1-work/include/linux/fs.h Thu Feb 7 02:09:02 2002 @@ -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[]; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |