প্রক্রিয়াটি OOM হত্যাকারী / সিগ্রুপ দ্বারা নিহত হওয়ার আগে সংকেত গ্রহণ করুন


11

আমাদের ক্লাস্টারে, আমরা আমাদের প্রক্রিয়া সংস্থানগুলি সীমাবদ্ধ করছি, যেমন মেমরি ( memory.limit_in_bytes)।

আমি মনে করি, শেষ পর্যন্ত, এটি লিনাক্স কার্নেলের ওওএম কিলারের মাধ্যমেও পরিচালনা করা হয় ( উত্স কোডটি পড়ে এটি দেখতে দেখতে )।

আমার প্রক্রিয়াটি মারা যাওয়ার আগে সিগন্যাল পাওয়ার কোনও উপায় আছে কি? (ঠিক এসজিই'র-notify বিকল্পের মতো , যা প্রক্রিয়াটি মারা যাওয়ার আগে প্রেরণ করবে ))qsubSIGUSR1

আমি /dev/mem_notify এখানে পড়ি কিন্তু আমার তা নেই - আজকাল অন্য কিছু আছে? আমিও পড়তে এই যা কিছুটা প্রাসঙ্গিক বলে মনে হয়।

আমি কমপক্ষে একটি ছোট স্ট্যাক ট্রেস এবং সম্ভবত কিছু দরকারী ডিবাগ তথ্য ডাম্প করতে সক্ষম হতে চাই - তবে আমি কিছু স্মৃতি মুক্ত করে পুনরুদ্ধার করতে পারি।

আমি বর্তমানে যে ছোট্ট স্ক্রিপ্টটি ব্যবহার করছি তা হ'ল এই ছোট স্ক্রিপ্ট যা প্রায়শই আমি সীমাবদ্ধতার (95%) কাছাকাছি কিনা তা পরীক্ষা করে এবং যদি তাই হয় তবে এটি প্রক্রিয়াটি একটি প্রেরণ করে SIGUSR1। বাশ-এ, আমি এই স্ক্রিপ্টটি ব্যাকগ্রাউন্ডে ( cgroup-mem-limit-watcher.py &) শুরু করছি যাতে এটি একই ক্রগ্রুপে অন্যান্য প্রক্সের জন্য নজর রাখে এবং প্যারেন্ট বাশ প্রক্রিয়াটি মারা যাওয়ার পরে এটি স্বয়ংক্রিয়ভাবে প্রস্থান করে।


আমি কোনও কর্তৃপক্ষের সন্ধান পেলাম না বা নিজেই নির্দিষ্ট প্রক্রিয়ার জন্য ওম কিলারকে ম্যানুয়ালি (ধারণাটি পরীক্ষা করার জন্য) অনুরোধ করার কোনও উপায় খুঁজে পেলাম না , তবে যা আমি পেয়েছি তা থেকে মনে হয় OOM হত্যাকারী কেবল সিগনটার পাঠায়, তাই আপনাকে সেট করতে হবে এই সংকেতের জন্য একটি হ্যান্ডলার
হাই-এঞ্জেল

5
@ হাই-অ্যাঞ্জেল: লিনাক্স উত্স কোড থেকে মনে হচ্ছে এটি সিক্কিল প্রেরণ করেছে।
অ্যালবার্ট

@ অ্যালবার্ট উত্স কোডটি পড়ার পরে, আমিও মনে করি যে ওওম কিলার সরাসরি একটি সিগ্কিল সিগন্যাল প্রেরণ করবেন।
অ্যান্ডি

উত্তর:


5

যখন কোনও সিগ্রুপের মেমরির ব্যবহার একটি প্রান্তিকের উপরে চলে যায় তার জন্য কোনও বিজ্ঞপ্তির জন্য নিবন্ধন করা সম্ভব। নীতিগতভাবে, প্রকৃত সীমাটির নীচে উপযুক্ত পয়েন্টে প্রান্তিক স্থাপনটি আপনাকে সংকেত পাঠাতে বা অন্য পদক্ষেপ নিতে দেয়।

দেখা:

https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt


5

OOM হত্যাকারী একটি সিগিল পাঠায় কারণ এটি সমস্যাযুক্ত প্রোগ্রামটিকে চালিয়ে যাওয়ার পছন্দটি করতে পাল্টে উত্পাদনমূলক হবে।

এর অর্থ হ'ল প্রক্রিয়াটি কখন এটি খুন করবে তা জানার কোনও উপায় নেই।

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

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