কীভাবে লিনাক্সে প্রক্রিয়াগুলির সময় এবং মেমরির ব্যবহার সীমিত করতে হয়


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

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

এই স্ক্রিপ্টটি চালানোর জন্য আপনার লিনাক্স সিস্টেমে পার্ল 5 ইনস্টল করা থাকতে হবে এবং/proc ফাইল সিস্টেমটি মাউন্ট করা উচিত।

আপনার লিনাক্স সিস্টেমে পার্ল ইনস্টল করা সংস্করণটি পরীক্ষা করতে, নিম্নলিখিত কমান্ডটি চালান।

$ perl -v

এর পরে, সাধারণ লিনাক্স কমান্ড ব্যবহার করে আপনার সিস্টেমে টাইমআউট সংগ্রহস্থলটি ক্লোন করুন।

$ cd ~/bin
$ git clone https://github.com/pshved/timeout.git
$ cd timeout

আসুন এখন সময়সীমার স্ক্রিপ্ট কীভাবে কাজ করে তা দেখুন।

এই প্রথম উদাহরণটি -m পতাকা ব্যবহার করে কীভাবে কোনও প্রক্রিয়ার মেমরির ব্যবহারকে ভার্চুয়াল মেমরির 100M সীমাবদ্ধ করতে হয় তা দেখায়। মেমরির জন্য ডিফল্ট ইউনিট কিলোবাইটে থাকে।

এখানে স্ট্রেস-এনজি কমান্ডটি 4 টি ভার্চুয়াল মেমরি স্ট্রেসার (ভিএমএস) চালায় যা 10 মিনিটের জন্য উপলব্ধ মেমরির 40% ব্যবহার করতে মিলিত হয়। সুতরাং প্রতিটি স্ট্রেসার উপলব্ধ মেমরির 10% ব্যবহার করে।

$ ./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

উপরের টাইমআউট কমান্ডের আউটপুট বিবেচনা করে, স্ট্রেস-এনজি কর্মী প্রক্রিয়াগুলি কেবল 1.16 সেকেন্ড পরে সমাপ্ত হয়েছিল। কারণ, ভিএমএসের সংযুক্ত মেমরি খরচ (438660 কিলোবাইট) স্ট্রেস-এনজি এবং তার শিশু প্রক্রিয়াগুলির জন্য অনুমোদিত ভার্চুয়াল মেমরির চেয়ে বেশি।

প্রক্রিয়াটির সীমাবদ্ধতা সক্ষম করতে, প্রদর্শিত হিসাবে -t পতাকা ব্যবহার করুন।

$ ./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m

উপরের উদাহরণে, যখন স্ট্রেস-এনজিপি সিপিইউ + এসওয়াইএস সময় 4 এর নির্ধারিত মানের বেশি হয়, কর্মী প্রক্রিয়াগুলি মারা যায়।

আপনি নিম্নলিখিত হিসাবে একবারে মেমরি এবং সময় উভয়ই সীমাবদ্ধ করতে পারেন।

$ ./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

টাইমআউট কিছু উন্নত বিকল্পগুলি যেমন - সনাক্তকরণ-হ্যাঙ্গআপগুলি সমর্থন করে যা হ্যাঙ্গআপ সনাক্তকরণ সক্ষম করে।

$ ./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

আপনি --memlimit-rss বা -s স্যুইচ ব্যবহার করে আরএসএস (আবাসিক সেট আকার) মেমরি সীমাটি পর্যবেক্ষণ করতে পারেন।

$ ./timeout -m 100000 -s  stress-ng --vm 4 --vm-bytes 40% -t 10m

তদতিরিক্ত, প্রস্থানটির প্রস্থান কোড বা সিগন্যাল + 128 ফিরে আসতে, প্রদর্শিত হিসাবে --confess বা -c বিকল্পটি ব্যবহার করুন।

$ ./timeout -m 100000 -c  stress-ng --vm 4 --vm-bytes 40% -t 10m

আরও তথ্য এবং ব্যবহারের উদাহরণের জন্য, কালআউট গিথুব সংগ্রহস্থল দেখুন: https://github.com/pshved/timeout।

আপনি নিম্নলিখিত নিম্নলিখিত নিবন্ধগুলিও সমানভাবে দরকারী:

  1. ব্যাচ মোডে ‘শীর্ষ’ দিয়ে মেমরির ব্যবহারের মাধ্যমে শীর্ষ 15 প্রক্রিয়াগুলি কীভাবে সন্ধান করতে হবে
  2. সিপুটুল - লিনাক্সের যে কোনও প্রক্রিয়ার সীমাবদ্ধতা এবং নিয়ন্ত্রণ সিপিইউ ব্যবহার
  3. সিপিইউলিমিট সরঞ্জাম সহ লিনাক্সে কোনও প্রক্রিয়াটির সিপিইউ ব্যবহার সীমিত করার জন্য

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