ফেসবুক এমন প্যাচ প্রকাশ করেছে যা লিনাক্সে স্ল্যাব মেমরি নিয়ামককে উন্নত করে

রোমানো গুশচিন (ফেসবুকের একজন সফটওয়্যার ইঞ্জিনিয়ার) লিনাক্স কার্নেল ডেভেলপমেন্ট মেইলিং লিস্টে স্ল্যাব ড্রাইভারের মেমরি অ্যালোকেশন অ্যাপ্লিকেশনের (একটি মেমরি কন্ট্রোলার) জন্য একগুচ্ছ প্যাচ লগ করেছেন ।

নতুন ড্রাইভারটি স্ল্যাব অ্যাকাউন্টিংকে মেমরি পেজের স্তর থেকে কার্নেল অবজেক্টের স্তরে স্থানান্তরিত করার জন্য উল্লেখযোগ্য , যা প্রতিটি সি-গ্রুপের জন্য পৃথক স্ল্যাব ক্যাশে বরাদ্দ করার পরিবর্তে বিভিন্ন সি-গ্রুপের মধ্যে স্ল্যাব পেজ শেয়ার করা সম্ভব করে তোলে।

রোমান বিদ্যমান স্ল্যাব মেমরি কন্ট্রোলারে তাকে "খুব গুরুতর ত্রুটি" বলেছিলেন যা আজকাল সিগ্রুপের সাহায্যে কম ব্যবহারের দিকে নিয়ে যায়।

"বিদ্যমান নকশাটি কম স্ল্যাব ব্যবহারের দিকে পরিচালিত করার আসল কারণটি সহজ: স্ল্যাব পৃষ্ঠাগুলি মেমরি পুল দ্বারা একচেটিয়াভাবে ব্যবহৃত হয়।

যদি ক্রগ্রুপ দ্বারা তৈরি কয়েকটি নির্দিষ্ট আকারের কয়েকটি বরাদ্দ থাকে, বা যদি সিগ্রুপ সরানোর পরে কিছু সক্রিয় বস্তু বাকী থাকে বা সিগ্রুপে একটি একক থ্রেডেড অ্যাপ্লিকেশন রয়েছে যা সবেমাত্র কোনও কার্নেল বস্তু বরাদ্দ করে থাকে তবে প্রতিবারে একটি নতুন সিপিইউ: এই সমস্ত ক্ষেত্রে, ফলস্বরূপ স্ল্যাব ব্যবহার খুব কম।

যদি কেএমএম অ্যাকাউন্টিং অক্ষম করা থাকে, কার্নেল অন্যান্য বরাদ্দের জন্য স্ল্যাব পৃষ্ঠায় মুক্ত স্থান ব্যবহার করতে পারে। «

গত বছর রোমানো গুশচিনের প্রস্তাবিত স্ল্যাব মেমোরি কন্ট্রোলারটি বেশ সম্ভাবনাময় ছিল, কারণ এটি স্ল্যাব ব্যবহারে দক্ষতা বৃদ্ধি করে , স্ল্যাবের জন্য ব্যবহৃত মেমোরির আকার ৩০-৪৫% কমিয়ে দেয় এবং কোরের মোট মেমোরি ব্যবহার উল্লেখযোগ্যভাবে হ্রাস করে।

এছাড়াও, প্রয়োগ করা প্যাচগুলো থেকে জানা গেছে যে ফেসবুক ইতিমধ্যেই তাদের সার্ভারে প্রোডাকশন পর্যায়ে এই কোড ব্যবহার করছে এবং এর মাধ্যমে ফ্রন্ট-এন্ড ওয়েব সার্ভার , ডেটাবেস ক্যাশিং ও ডিএনএস সার্ভারের মতো বিভিন্ন সুবিধার জন্য প্রায় ৬৫০-৭০০ মেগাবাইটেরও বেশি জায়গা সাশ্রয় করছে।

অচল স্ল্যাবের সংখ্যা কমানো মেমরি ফ্র্যাগমেন্টেশনের উপরও ইতিবাচক প্রভাব ফেলে। নতুন মেমরি কন্ট্রোলারটি স্ল্যাব ব্যবস্থাপনার জন্য কোডকে উল্লেখযোগ্যভাবে সরল করে এবং প্রতিটি সি-গ্রুপের জন্য গতিশীলভাবে স্ল্যাব ক্যাশ তৈরি ও মুছে ফেলার জটিল অ্যালগরিদমের প্রয়োজনীয়তা দূর করে।

নতুন বাস্তবায়নে মেমরির জন্য সমস্ত সিগ্রুপগুলি স্ল্যাব ক্যাশেগুলির একটি সাধারণ সেট ব্যবহার করে এবং স্ল্যাব ক্যাশেগুলির জীবনকালকে আর ক্রোগের মাধ্যমে সেট করা মেমরির সীমাবদ্ধতার আজীবনের সাথে বাঁধা থাকে না।

নতুন স্ল্যাব কন্ট্রোলারে প্রয়োগ করা আরও সুনির্দিষ্ট রিসোর্স অ্যাকাউন্টিংয়ের তাত্ত্বিকভাবে সিপিইউকে আরও বেশি লোড করা উচিত, তবে বাস্তবে পার্থক্যগুলি নগণ্য বলে প্রমাণিত হয়েছিল।

বিশেষ করে, নতুন স্ল্যাব কন্ট্রোলারটি বিভিন্ন ধরনের লোড সামলানো লাইভ ফেসবুক সার্ভারগুলিতে বেশ কয়েক মাস ধরে ব্যবহৃত হচ্ছে এবং এখন পর্যন্ত কোনো উল্লেখযোগ্য অবনতি শনাক্ত করা যায়নি।

প্যাচটিতে বেশ কয়েকটি আধা-স্বতন্ত্র অংশ রয়েছে, যা স্ল্যাবের মেমরির নিয়ামকের বাইরেও তাদের ব্যবহার খুঁজে পেতে পারে:

  • সাবপেজ লোড এপিআই, যা ভবিষ্যতে পৃষ্ঠার আকার নয় এমন অন্যান্য অবজেক্টগুলি গণনা করতে ব্যবহার করা যেতে পারে, উদাহরণস্বরূপ পার্কপু বরাদ্দ
  • Mem_cgroup_ptr এপিআই, যেখানে পয়েন্টারগুলিকে একটি মেমকগের সাথে গণনা করা হয়, অন্য বস্তুর দক্ষতার সাথে পুনঃস্থাপনের জন্য পুনরায় ব্যবহার করা যেতে পারে, উদাহরণস্বরূপ পেজক্যাস।

একই সাথে, মেমরি ব্যবহারে উল্লেখযোগ্য হ্রাস দেখা যায় : কিছু হোস্টে ১ জিবি পর্যন্ত মেমরি সাশ্রয় করা সম্ভব হয়েছে, কিন্তু এই সূচকটি মূলত লোডের ধরন, র‍্যামের মোট আকার, সিপিইউ-এর পরিমাণ এবং মেমরির সাথে কাজ করার বৈশিষ্ট্যের উপর নির্ভর করে।

প্রতিটি মেমরি সিগ্রুপের জন্য আলাদা আলাদা আলাদা সেট তৈরি করার পরিবর্তে দুটি গ্লোবাল সেট ব্যবহার করা হয়: আনকাউন্টবিহীন এবং রুট গ্রুপ সিগ্রুপ অ্যাসাইনমেন্টের জন্য মূল সেট এবং অন্যান্য সমস্ত অ্যাসাইনমেন্টের জন্য দ্বিতীয় সেট। এটি স্বতন্ত্র kmem_cach- এর আজীবন পরিচালনকে সহজ করার অনুমতি দেয়।

অবশেষে, আপনি যদি নতুন ১৯টি প্যাচের সেট সম্পর্কে জানতে আগ্রহী হন, তবে তা কার্নেল মেইলিং লিস্টে খুঁজে নিতে পারেন ।


Google-এ পছন্দের উৎস হিসেবে যোগ করুন