আমি কীভাবে oom_score_adj ব্যবহার করব?


24

১১.০৪-তে, /proc/[pid]রয়েছে oom_score_adjতবে man procপুরানো বর্ণনা করে oom_adj। এটি কীভাবে ব্যবহার করতে হয় সে সম্পর্কে কোনও তথ্যের জন্য আমি অসফলভাবে গুগল করেছি।

আমার যে ব্যবস্থাটি করা দরকার তা হ'ল 'পিবিএস' বা 'গ্রিডেনজিন' দিয়ে শুরু হওয়া প্রক্রিয়াগুলি অন্য কিছু মারা যাওয়ার আগেই মারা যায়। আমি এটা কিভাবে করবো?


আপস্টার্ট দ্বারা পরিচালিত পরিষেবাদিগুলির জন্য স্থায়ীভাবে এই পরিবর্তন করতে: কীভাবে স্থায়ীভাবে ডিমনগুলির জন্য ওওএম কিলার সমন্বয় সেট করবেন?
gertvdijk

এটি ইতিমধ্যে একটি উত্তর। এটি এর সাথে লিঙ্ক করে। :)
gertvdijk

তবে এই সাইটে নয় :-)
bmargulies

উত্তর:


13

একই প্রশ্নে ইউনিক্স এবং লিনাক্সের নিজস্ব প্রশ্নোত্তর ভিত্তিতে ।

যেমন স্টুয়ার্ট তার উত্তরে খুব ভালভাবে নির্দেশ করেছেন , বৈধ মানগুলি -1000 থেকে 1000 এর মধ্যে পরিসীমা হয় oom_score_adj। মান যত কম হবে ততই মারার সম্ভাবনা তত কম

একবার আপনি অ্যাপ্লিকেশনটি পুনরায় চালু করার পরে এই মানটি বারবার পরিবর্তন করতে খুব অসুবিধা হয়। প্রক্রিয়াটি সমাপ্ত হওয়ার পরে তথ্যগুলি সহজেই হারিয়ে যায়। আপস্টার্ট (উবুন্টুতে ডিমন ডিমন) এর এটির জন্য ডিমনগুলির কনফিগার করার জন্য একটি দুর্দান্ত বিকল্প রয়েছে যখনই এটি পুনরায় শুরু হয়েছে (রি) শুরু হয়েছে:

oom score

[...] স্নিপ [...]

উদাহরণ:

# this application is a "resource hog"
oom score 1000

expect daemon
respawn
exec /usr/bin/leaky-app

সুতরাং, মূলত, আপনি /etc/init/myservice.confযে পরিষেবাগুলি পরিবর্তন করতে চান তার জন্য একটি লাইন অন্তর্ভুক্ত করতে কনফিগারেশন ফাইলটি সম্পাদনা করতে পারেন oom score -1000। আমি ধরে নিচ্ছি যে আপনি যে প্রশ্নে 'pbs' বা 'গ্রিডেনজিন' আপনার প্রশ্নে কথা বলছেন সেগুলি আপস্টার্ট-সক্ষমিত, অন্যথায় আপনাকে স্থায়ীভাবে পরিবর্তনের জন্য অন্য কোনও উপায়ের প্রয়োজন হবে।


7

যদি আপনি ওম-কিলারটির জন্য অগ্রাধিকার দিতে চান এমন প্রক্রিয়া তৈরি করে প্রারম্ভিক স্ক্রিপ্টটি সংশোধন করতে পারেন তবে শুরু স্ক্রিপ্টে নিম্নলিখিতটি যুক্ত করুন:

echo 1000 > /proc/self/oom_score_adj

মান শিশু প্রক্রিয়াগুলির জন্য উত্তরাধিকারসূত্রে প্রাপ্ত।


6

যদি আপনি oom_adj বা oom_score_adj উভয়ের জন্য উচ্চ (ইশ) মান নির্ধারণ করেন তবে প্রথমে তাদের হত্যা করা হবে। যেমন

echo 15 > /proc/[pid]/oom_adj

oom_adj -16 থেকে 15 পর্যন্ত যায় এবং উপরে উল্লিখিত হিসাবে oom_score_adj -1000 থেকে 1000 গ্রহণ করে


এটি করার জন্য আপনাকে রুট হওয়া দরকার। sudo sh -c "echo -1000 > /proc/[PID]/oom_score_adj"
আদিল

2
প্রকৃতপক্ষে, আপনি আপনার প্রসেসের জন্য স্কোর বাড়াতে পারবেন ডাব্লু / ও রুট ("হ্যাঁ, এটি ওম-মেরেড হতে পারে")। হ্রাস (0 নীচে) এর মূল প্রয়োজন।
পিসকভোর

5

কোডটি সন্ধান করা সর্বদা একটি ভাল ধারণা। সাধারণত আমি কার্নেল.অর্গের অনুসন্ধান ফাংশনটি ব্যবহার করি তবে এটি বর্তমানে নিচে। গিথুবও একটা ভাল কাজ করে। আমি এটি খুঁজে পেয়েছি:

পরিবর্তে, একটি নতুন টিউনেবল, / proc / pid / oom_score_adj যোগ করা হয়েছে যা -1000 থেকে +1000 অবধি রয়েছে। এটি তাত্ত্বিকভাবে পোলারাইজ করার জন্য ব্যবহৃত হতে পারে যে নির্দিষ্ট কাজগুলি কখনই ওম কিলের জন্য বিবেচিত হয় না তবে অন্যরা সর্বদা বিবেচিত হতে পারে। মানটি খারাপভাবে () স্কোরের সাথে সরাসরি যুক্ত করা হয় সুতরাং উদাহরণস্বরূপ, সিস্টেমের অন্যান্য কাজের সাথে তুলনায় তুলনায় এর মেমরির ব্যবহারের 50% ছাড় দেওয়া হয়, মেমোপোলিসিতে আবদ্ধ, সিপুসেটে, বা একই মেমরি নিয়ামক ভাগ করে নিচ্ছে।

Https://github.com/mirferences/linux-2.6/commit/a63d83f427fbce97a6cea0db2e64b0eb8435cd10#incolve/linux/oom.h থেকে


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

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