জোর করে অদলবদল করে ওওএম-কিলার ট্রিগার করা সম্ভব?


26

vm.swappinessসিস্টেমে র‌্যামের বাইরে চলে যাওয়ার (স্মৃতিশক্তি ফুরিয়ে যাওয়ার বিপরীতে) এবং অদলবদল করতে বাধ্য করা হলে সিস্টেমটি অযৌক্তিকভাবে নিষ্ক্রিয় পৃষ্ঠাগুলি ( ) সরিয়ে আনা সম্ভব , তবে ওম-কিলারকে ডাকে?

চূড়ান্ত লক্ষ্যটি হ'ল প্রধান পৃষ্ঠার ত্রুটির কারণে ডিস্কটি ছড়িয়ে দেওয়া শুরু করার সময় সিস্টেমটিকে নাকাল হওয়া থেকে থামতে দেওয়া হয়, তবে তারপরেও নিষ্ক্রিয় পৃষ্ঠাগুলি সরে যেতে দেওয়া হয়।

আরেকটি ইচ্ছা হ'ল ওম-কিলার ট্রিগারগুলির আগে সিস্টেমটি কতটা অদলবদ মেমরির ব্যবহার করতে বাধ্য হয় তা কনফিগার করা। যতক্ষণ না এটি খুব বেশি দূরে না যায় ততক্ষণ এই পদ্ধতিটি সামান্য কিছুটা অদলবলে ডুবতে পারে। অথবা আমি সমস্ত র‌্যাম ব্যবহার করার আগে ওম-কিলার ট্রিগার করার জন্য এই জাতীয় প্রান্ত নির্ধারণ করতে পারি যাতে ফাইল সিস্টেম ক্যাশে সর্বদা জায়গা থাকে (এবং এভাবে আরও ডিস্ক ছিন্ন করা এড়ানো যায়)।

এটি করা কঠিন বলে মনে হয় না। দেখে মনে হচ্ছে সিস্টেমটি এক্স-র‌্যাম ব্যবহার / নিখরচায় করার পরে আপনি কেবল ওম-কিলারটিকে ট্রিগার করতে বলতে পারেন। তবে এই কারণেই আমি জিজ্ঞাসা করছি; আমি জানি না।

স্পষ্টতার জন্য, আমি অদলবদল বন্ধ করতে বা vm.swappinessপ্যারামিটারটি সামঞ্জস্য করতে চাইছি না


3
আকর্ষণীয়ভাবে যথেষ্ট, কোনও অদলবদল ফাইল না থাকলেও এটি ঘটে। স্পষ্টতই, কেবল পঠনযোগ্য মেমরি ম্যাপ করা ফাইলগুলি (এক্সিকিউটেবল, লাইব্রেরি, সম্ভবত গ্রাফিক সংস্থানসমূহ) বদলে যায়।
ডাব্লুজিএইচ

ফেসবুকের ওমড হ'ল একটি ইউজার-স্পেস ডেমন যা সামগ্রিক সিস্টেম থ্রুপুট (উদাহরণস্বরূপ, কেবল থ্র্যাশিংয়ের সময়) ভিত্তিক প্রক্রিয়াগুলি হ্রাস করার জন্য ডিজাইন করা। তবে ডেস্কটপ / ওয়ার্কস্টেশনগুলির জন্য সেট আপ করা বেশ জটিল বলে মনে হচ্ছে (যা সম্ভবত সিগ্রুপ বা পাত্রে টাস্ক রাখছে না)।
জেফ্রি বসবুম

উত্তর:


22

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

তবে ব্যবহারকারীর স্পেসে আমরা যা খুশি তা করতে পারি। সুতরাং আমি প্রথম OOM ডেমন লিখেছি ( https://github.com/rfjakob/earlyoom ) যা উপলব্ধ র‌্যামটি 10% এর নীচে চলে যাওয়ার পরে সবচেয়ে বড় প্রক্রিয়াটি (আরএসএস দ্বারা) মেরে ফেলবে।

প্রারম্ভীকরণ ব্যতীত, কয়েকবার http://www.unrealengine.com/html5/ শুরু করে আমার মেশিনটি (8 গিগাবাইট র‌্যাম) লক করা সহজ হয়েছে। এখন জিনিসগুলি হাতছাড়া হওয়ার আগে দোষী ব্রাউজারের ট্যাবগুলি মারা যাবে।


1
ধন্যবাদ, আমি ঠিক তাই খুঁজছিলাম আমি এখন column -t -s,কয়েকটি বিশাল সিএসভি ফাইলে চালিয়ে যেতে পারি এবং earlyoomকোনও প্রতিক্রিয়াহীনতা লক্ষ্য করার আগে এটি সম্ভব না হলে এটি মারতে পারি।
হেনফাইবার

4

এটি অত্যধিক বিস্তৃত সমাধানের মতো শোনাচ্ছে। আমি প্রস্তাব দেব (এবং আমি যে মেশিনগুলিকে হাইবারনেট করার দরকার নেই সেগুলিতে এটি করি) কেবলমাত্র অল্প পরিমাণে অদলবদল (128-256MiB) বরাদ্দ। এইভাবে কার্নেলটি কয়েকটি পৃষ্ঠাগুলি অদলবদল করতে পারে তবে জিনিসগুলি খারাপ হওয়ার আগে OOM- ঘাতককে ডাকা হবে।

আপনি যদি সত্যিই এটি করতে চান তবে আমার মনে হয় আপনার নিজের স্ক্রিপ্ট / প্রোগ্রাম লিখতে হবে যা স্ব্যাপের ব্যবহারের উপর নজর রাখে এবং ম্যাজিক সিসারিক কী (যা এখানে লেখার মাধ্যমে প্রোগ্রামক্রমে করা যেতে পারে /proc/sysrq-trigger) ব্যবহার করে OOM- ঘাতককে অনুরোধ করে ।


1
আমি তর্ক করব যে একটি ছোট অদলবদল করা খুব মার্জিত সমাধান নয় is আপনি মূলত আপনার অদলবদলের কার্যকারিতা সীমাবদ্ধ করে নিন। আপনার যদি অনেকগুলি নিষ্ক্রিয় পৃষ্ঠাগুলি থাকে এবং আপনার চারপাশে 10 জিবি অদলবদল করে উপকার পাবেন? আমার কাছে ~ 100gb র‌্যামের বাক্স রয়েছে যেখানে 10 জিবি অদলবদূর একটি দীর্ঘ ধারণা নেই। এবং ইউজারস্পেসে এটি করার জন্য একটি অ্যাপ্লিকেশন লেখা সমস্যাগুলির জন্য কেবল উন্মুক্ত (আদি কার্নেলের তুলনায়)।
প্যাট্রিক

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

কেন এটা কঠিন হবে? vm.swappinessর‌্যামের বাইরে চলে যাওয়ার কারণে অদলবদল, প্রিমিপটিভ অদলবদল এবং জোরপূর্বক অদলবদলের জন্য কেবল 2 ধরণের রয়েছে । যেটি ঘটতে হবে তা হ'ল যখন কার্নেলটি ওম-কিলারকে ট্রিগার করতে বাধ্য হয়। এবং 10 জিবি ডিস্কটি ছিন্ন করতে জোর করে অদলবদল করার জন্য প্রচুর স্থানও ছেড়ে দেয়।
প্যাট্রিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.