file-max
সীমা যে আপনার অধীনে দেখতে proc fs
struct হয় এক মান মধ্যে "./include/linux/fs.h"
struct হয় হল:
/* 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), 0,
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 ব্যতীত ব্যবহৃত হবে।
কার্নেল চালানো শুরু হওয়ার সাথে সাথে ফাইল_ইনিট ব্যবহার করা হয় এবং যখন kmem_cache_create
সাধারণ ফাইল স্ল্যাব ক্যাশে তৈরি করার জন্য ডাকা হয় তখন আপনাকে পতাকাটি 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,
},
ফাইল সর্বাধিক মেমরির 10%, যদি আপনার সিস্টেমের মেমরির আকার আলাদা থাকে তবে আমি মনে করি এটি স্বাভাবিক।