但是:它的默认值是多少?检查我公司的10台服务器给了我7个不同的值,这些值似乎都是随机的.
内核文档只是提到可以更改值 – 但不是如何计算默认值.
你们中的任何人都知道如何确定默认值吗?
解决方法 在proc fs下看到的文件最大限制是struct中“./include/ linux/fs.h”中的一个值,结构是:/* And dynamically-tunable limits and defaults: */struct files_stat_struct { unsigned long nr_files; /* read only */ unsigned long nr_free_files; /* read only */ unsigned long max_files; /* tunable THIS IS OUR VALUE */};
现在在./fs/file_table.c中,files_stat_struct开始使用:
struct files_stat_struct files_stat = { .max_files = NR_file /* This constant is 8192 */};
现在在前一个文件中“./fs/file_table.c”将具有将成为真正工作的功能
voID __init files_init(unsigned long mempages){ unsigned long n; filp_cachep = kmem_cache_create("filp",sizeof(struct file),SLAB_HWCACHE_AliGN | SLAB_PANIC,NulL); /* * 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 = max_t(unsigned long,n,NR_file); files_defer_init(); lg_lock_init(files_lglock); percpu_counter_init(&nr_files,0);}
从我在files_init中看到并查看宏max_t,如果文件的10%内存大于8192,将使用这些值,除非8192.
在内核开始执行时使用files_init,当调用kmem_cache_create创建常规文件slab缓存时,需要查看标志SLAB_PANIC.
现在你需要看看./kernel/sysctl.c
{ .procname = "file-max",.data = &files_stat.max_files,.maxlen = sizeof(files_stat.max_files),.mode = 0644,.proc_handler = proc_doulongvec_minmax,},
file-max是内存的10%,如果你的系统有不同的内存大小,我认为这是正常的.
总结以上是内存溢出为你收集整理的linux-kernel – / proc / sys / fs / file-max的缺省值全部内容,希望文章能够帮你解决linux-kernel – / proc / sys / fs / file-max的缺省值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)