/ Proc / sys / fs / ফাইল-সর্বোচ্চের ডিফল্ট মান


9

আমি সচেতন যে / proc / sys / fs / file-max সর্বাধিক সংখ্যক ওপেন ফাইল বর্ণনাকারীর সংজ্ঞা দেয় এবং রানটাইম বা বুটের সময় সেট করা যায়।

তবে: এর ডিফল্ট মান কত? আমার সংস্থায় 10 টি সার্ভার চেক করা আমাকে 7 টি বিভিন্ন মান দেয় যা এগুলি এলোমেলো মনে হয়।

কার্নেলের ডকুমেন্টেশনটি কেবল উল্লেখ করে রাখে যে মানটি পরিবর্তন করা যায় - তবে কীভাবে ডিফল্ট মান গণনা করা হয় তা নয়।

আপনারা কেউ কি জানেন যে ডিফল্ট মানটি কীভাবে নির্ধারিত হয়?

উত্তর:


13

file-maxসীমা যে আপনার অধীনে দেখতে proc fsstruct হয় এক মান মধ্যে "./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.cfiles_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%, যদি আপনার সিস্টেমের মেমরির আকার আলাদা থাকে তবে আমি মনে করি এটি স্বাভাবিক।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.