cgroups
এটি করার সঠিক উপায়, যেমন অন্যান্য উত্তরগুলি নির্দেশ করেছে। দুর্ভাগ্যক্রমে সমস্যার কোনও নিখুঁত সমাধান নেই, কারণ আমরা নীচে প্রবেশ করব into সিগ্রুপ মেমরির ব্যবহারের সীমা নির্ধারণের জন্য বিভিন্ন উপায়ে একটি গোছা রয়েছে। কোনও ব্যবহারকারীর লগইন সেশনটি কীভাবে স্বয়ংক্রিয়ভাবে একটি সিগ্রুপের অংশ তৈরি করা যায় তা সিস্টেম থেকে অন্য সিস্টেমে পরিবর্তিত হয়। রেড হ্যাটের কিছু সরঞ্জাম রয়েছে এবং এটি সিস্টেমযুক্তও রয়েছে ।
memory.memsw.limit_in_bytes
এবং memory.limit_in_bytes
অদলবদল সহ যথাক্রমে সীমাবদ্ধ করে। ক্ষতিটি memory.limit_in_bytes
হ'ল এটি গ্রুপের কোটার বিপরীতে সিগ্রুপে প্রক্রিয়াগুলির পক্ষে কার্নেল দ্বারা আটকানো ফাইলগুলি গণনা করে। কম ক্যাচিংয়ের অর্থ আরও বেশি ডিস্ক অ্যাক্সেস, সুতরাং যদি সিস্টেমটি অন্যথায় কিছু মেমরি উপলব্ধ থাকে তবে আপনি সম্ভাব্যভাবে কিছু কার্য সম্পাদন ত্যাগ করেন।
অন্যদিকে, memory.soft_limit_in_bytes
সিগ্রুপকে ওভার-কোটায় যেতে দেয়, তবে কার্নেল ওওএম কিলারকে যদি অনুরোধ করা হয় তবে তাদের কোটার উপরে থাকা সিগ্রুপগুলি প্রথমে যুক্তিসঙ্গতভাবে মেরে ফেলা হবে। তবে এর নেতিবাচক দিকটি হ'ল এমন পরিস্থিতি রয়েছে যেখানে কিছু স্মৃতি তাত্ক্ষণিকভাবে প্রয়োজন হয় এবং OOM হত্যাকারীর জন্য হত্যা প্রক্রিয়াগুলির আশেপাশে দেখার সময় নেই, এমন ক্ষেত্রে অতিরিক্ত-কোটা ব্যবহারকারীর প্রক্রিয়াগুলির আগে কিছু ব্যর্থ হতে পারে নিহত.
ulimit
তবে এটি একেবারে ভুল সরঞ্জাম tool ভার্চুয়াল মেমরির ব্যবহারের উপর ulimit স্থান সীমাবদ্ধতা, যা আপনি চান তা প্রায় নয়। অনেক বাস্তব-বিশ্বের অ্যাপ্লিকেশন শারীরিক মেমরির চেয়ে অনেক বেশি ভার্চুয়াল মেমরি ব্যবহার করে। বেশিরভাগ আবর্জনা-সংগৃহীত রানটাইম (জাভা, গো) খণ্ড খণ্ডগুলি এড়াতে এইভাবে কাজ করে। সি-তে একটি তুচ্ছ "হ্যালো ওয়ার্ল্ড" প্রোগ্রাম, যদি ঠিকানা স্যানিটাইজার দিয়ে সংকলিত হয় তবে 20TB ভার্চুয়াল মেমরি ব্যবহার করতে পারে। যে বরাদ্দকারীরা নির্ভর করে না sbrk
যেমন জেমালোক (যা জংয়ের জন্য ডিফল্ট বরাদ্দকারী ) বা tcmalloc, এছাড়াও তাদের শারীরিক ব্যবহারের চেয়ে বেশি পরিমাণে ভার্চুয়াল মেমরির ব্যবহার করবে। দক্ষতার জন্য, অনেক সরঞ্জাম ফাইল এমএম্যাপ করবে, যা ভার্চুয়াল ব্যবহার বাড়ায় তবে শারীরিক ব্যবহারের প্রয়োজন হয় না। আমার সমস্ত ক্রোম প্রক্রিয়া প্রতিটি 2 টিবি ভার্চুয়াল মেমরি ব্যবহার করে। আমি 8 জিবি শারীরিক স্মৃতিযুক্ত একটি ল্যাপটপে আছি। এখানে যে কোনও উপায়ে ভার্চুয়াল মেমোরি কোটা সেট আপ করার চেষ্টা করা হয় তা ক্রোমকে ভেঙে দেয়, ক্রোমকে এমন কিছু সুরক্ষা বৈশিষ্ট্য নিষ্ক্রিয় করতে বাধ্য করে যা প্রচুর পরিমাণে ভার্চুয়াল মেমরি বরাদ্দের উপর নির্ভর করে (তবে ব্যবহার করে না), বা ব্যবহারকারীকে সিস্টেমটিকে অপব্যবহার করা থেকে বিরত রাখতে সম্পূর্ণ অকার্যকর হতে পারে ।