লিনাক্স কার্নেলকে বাফার ক্যাশে কেবলমাত্র একটি নির্দিষ্ট শতাংশের স্মৃতি ব্যবহার করার কথা বলার উপায় আছে? আমি জানি /proc/sys/vm/drop_caches
যে সাময়িকভাবে ক্যাশে সাফ করার জন্য ব্যবহার করা যেতে পারে, তবে এমন কোনও স্থায়ী সেটিং রয়েছে যা এটিকে প্রধান মেমরির 50% এরও বেশি বাড়তে বাধা দেয়?
যে কারণটি আমি এটি করতে চাই তা হ'ল আমার কাছে একটি সার্ভার রয়েছে যা একটি কেফ ওএসডি চালাচ্ছে যা নিয়মিতভাবে ডিস্ক থেকে ডেটা পরিবেশন করে এবং কয়েক ঘন্টাের মধ্যে পুরো শারীরিক মেমরিটি বাফার ক্যাশে ব্যবহার করতে সক্ষম করে। একই সময়ে, আমাকে এমন অ্যাপ্লিকেশনগুলি চালনা করতে হবে যা দৈহিক মেমরির একটি বিশাল পরিমাণ (জিবি 10s) বরাদ্দ করবে। জনপ্রিয় বিশ্বাসের বিপরীতে (বাফার ক্যাশে সম্পর্কিত প্রায় সমস্ত প্রশ্নের বিষয়ে দেওয়া পরামর্শ দেখুন), পরিষ্কার ক্যাশে প্রবেশাধিকার ছাড়াই মেমরিটি স্বয়ংক্রিয়ভাবে মুক্ত করা তাত্ক্ষণিক নয় : বাফার ক্যাশে পূর্ণ হওয়ার পরে আমার অ্যাপ্লিকেশন শুরু করা এক মিনিট সময় নিতে পারে ( *), ক্যাশে সাফ করার পরে (ব্যবহার করে echo 3 > /proc/sys/vm/drop_caches
) একই অ্যাপ্লিকেশনটি প্রায় তাত্ক্ষণিকভাবে শুরু হয়।
(*) প্রারম্ভকালের এই মিনিটের সময়, অ্যাপ্লিকেশনটি নতুন স্মৃতিতে ত্রুটিযুক্ত হয়ে উঠেছে তবে তার 100% সময় কার্নেলে ব্যয় করে, ভিটুন নামে একটি ফাংশন অনুসারে pageblock_pfn_to_page
। এই ফাংশনটি মনে হয় বিশাল পৃষ্ঠাগুলি সন্ধানের জন্য প্রয়োজনীয় মেমরি সংযোগের সাথে সম্পর্কিত, যা আমাকে বিশ্বাস করতে পরিচালিত করে যে আসলে খণ্ডিতকরণই সমস্যা।