ലിനക്സിലെ പ്രക്രിയകളുടെ സമയവും മെമ്മറി ഉപയോഗവും എങ്ങനെ പരിമിതപ്പെടുത്താം


ലിനക്സിലെ പ്രക്രിയകളുടെ സമയവും മെമ്മറി ഉപഭോഗവും പരിമിതപ്പെടുത്തുന്നതിനുള്ള ഉപയോഗപ്രദമായ റിസോഴ്സ് മോണിറ്ററിംഗ് പ്രോഗ്രാമാണ് ടൈംഔട്ട് സ്ക്രിപ്റ്റ്. നിയന്ത്രണത്തിൽ പ്രോഗ്രാമുകൾ പ്രവർത്തിപ്പിക്കാനും സമയവും മെമ്മറി പരിധികളും നടപ്പിലാക്കാനും ഇത് നിങ്ങളെ അനുവദിക്കുന്നു, ഈ പാരാമീറ്ററുകൾ ലംഘിച്ചാൽ പ്രോഗ്രാം അവസാനിപ്പിക്കുന്നു.

ഇൻസ്റ്റാളേഷൻ ആവശ്യമില്ല, ടൈംഔട്ട് പ്രോഗ്രാം ഉപയോഗിച്ച് ഒരു കമാൻഡ് അതിന്റെ ആർഗ്യുമെന്റുകൾക്കൊപ്പം എക്സിക്യൂട്ട് ചെയ്യുക, അത് കമാൻഡിന്റെ മെമ്മറിയും സമയ ഉപഭോഗവും നിരീക്ഷിക്കും, അത് പരിധി വിട്ടുപോയാൽ പ്രക്രിയയെ തടസ്സപ്പെടുത്തുകയും മുൻകൂട്ടി നിർവചിച്ച സന്ദേശം നിങ്ങളെ അറിയിക്കുകയും ചെയ്യും.

ഈ സ്ക്രിപ്റ്റ് പ്രവർത്തിപ്പിക്കുന്നതിന്, നിങ്ങളുടെ Linux സിസ്റ്റത്തിൽ Perl 5 ഇൻസ്റ്റാൾ ചെയ്യുകയും /proc ഫയൽസിസ്റ്റം മൗണ്ട് ചെയ്യുകയും വേണം.

നിങ്ങളുടെ Linux സിസ്റ്റത്തിൽ Perl-ന്റെ ഇൻസ്റ്റാൾ ചെയ്ത പതിപ്പ് പരിശോധിക്കുന്നതിന്, ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

$ perl -v

അടുത്തതായി, സാധാരണ Linux കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങളുടെ സിസ്റ്റത്തിലേക്ക് ടൈംഔട്ട് റിപ്പോസിറ്ററി ക്ലോൺ ചെയ്യുക.

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

ടൈംഔട്ട് സ്ക്രിപ്റ്റ് എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് നോക്കാം.

-m ഫ്ലാഗ് ഉപയോഗിച്ച് ഒരു പ്രോസസ്സിന്റെ മെമ്മറി ഉപയോഗം 100M വെർച്വൽ മെമ്മറിയിലേക്ക് എങ്ങനെ പരിമിതപ്പെടുത്താമെന്ന് ഈ ആദ്യ ഉദാഹരണം കാണിക്കുന്നു. മെമ്മറിയുടെ ഡിഫോൾട്ട് യൂണിറ്റ് കിലോബൈറ്റിലാണ്.

ഇവിടെ, സ്uട്രെസ്സ്-എൻജി കമാൻഡ് 4 വെർച്വൽ മെമ്മറി സ്uട്രെസ്സറുകൾ (വിഎംഎസ്) പ്രവർത്തിപ്പിക്കുന്നു, അവ സംയോജിപ്പിച്ച് ലഭ്യമായ മെമ്മറിയുടെ 40% 10 മിനിറ്റ് ഉപയോഗിക്കും. അങ്ങനെ ഓരോ സ്ട്രെസ്സറും ലഭ്യമായ മെമ്മറിയുടെ 10% ഉപയോഗിക്കുന്നു.

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

മുകളിലെ ടൈംഔട്ട് കമാൻഡിന്റെ ഔട്ട്പുട്ട് കണക്കിലെടുത്ത്, സ്ട്രെസ്-എൻജി വർക്കർ പ്രോസസുകൾ വെറും 1.16 സെക്കൻഡിന് ശേഷം അവസാനിപ്പിച്ചു. കാരണം, VMS-ന്റെ (438660 കിലോബൈറ്റുകൾ) സംയോജിത മെമ്മറി ഉപഭോഗം സ്uട്രെസ്-എൻജിക്കും അതിന്റെ ചൈൽഡ് പ്രോസസ്സുകൾക്കുമുള്ള അനുവദനീയമായ വെർച്വൽ മെമ്മറി ഉപയോഗത്തേക്കാൾ കൂടുതലാണ്.

പ്രക്രിയയുടെ സമയ പരിധി പ്രാപ്തമാക്കാൻ, കാണിച്ചിരിക്കുന്നതുപോലെ -t ഫ്ലാഗ് ഉപയോഗിക്കുക.

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

മുകളിലെ ഉദാഹരണത്തിൽ, സമ്മർദ്ദം-ng CPU+SYS സമയം നിർവചിച്ച മൂല്യമായ 4 കവിയുമ്പോൾ, തൊഴിലാളി പ്രക്രിയകൾ നശിപ്പിക്കപ്പെടും.

നിങ്ങൾക്ക് ഇനിപ്പറയുന്ന രീതിയിൽ മെമ്മറിയും സമയവും ഒരേസമയം പരിമിതപ്പെടുത്താനും കഴിയും.

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

ഹാംഗ്അപ്പ് കണ്ടെത്തൽ പ്രവർത്തനക്ഷമമാക്കുന്ന --detect-hangups പോലുള്ള ചില വിപുലമായ ഓപ്ഷനുകളും ടൈംഔട്ട് പിന്തുണയ്ക്കുന്നു.

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

--memlimit-rss അല്ലെങ്കിൽ -s സ്വിച്ച് ഉപയോഗിച്ച് നിങ്ങൾക്ക് RSS (റെസിഡന്റ് സെറ്റ് സൈസ്) മെമ്മറി പരിധി നിരീക്ഷിക്കാനാകും.

$ ./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

കൂടുതൽ വിവരങ്ങൾക്കും ഉപയോഗ ഉദാഹരണത്തിനും, കാലഹരണപ്പെട്ട Github ശേഖരം കാണുക: https://github.com/pshved/timeout.

ഇനിപ്പറയുന്ന അനുബന്ധ ലേഖനങ്ങളും ഒരുപോലെ ഉപയോഗപ്രദമാണെന്ന് നിങ്ങൾ കണ്ടെത്തിയേക്കാം:

  1. ബാച്ച് മോഡിൽ 'ടോപ്പ്' ഉപയോഗിച്ച് മെമ്മറി ഉപയോഗത്തിലൂടെ മികച്ച 15 പ്രക്രിയകൾ എങ്ങനെ കണ്ടെത്താം
  2. CPUTool - Linux-ലെ ഏത് പ്രക്രിയയുടെയും CPU ഉപയോഗം പരിമിതപ്പെടുത്തുകയും നിയന്ത്രിക്കുകയും ചെയ്യുക
  3. സിപിയുലിമിറ്റ് ടൂൾ ഉപയോഗിച്ച് ലിനക്സിലെ ഒരു പ്രോസസ്സിന്റെ സിപിയു ഉപയോഗം എങ്ങനെ പരിമിതപ്പെടുത്താം

ലിനക്സിലെ പ്രക്രിയകളുടെ സമയവും മെമ്മറി ഉപഭോഗവും പ്രധാനമായും നിയന്ത്രിക്കുന്ന ഒരു ലളിതമായ റിസോഴ്സ് മോണിറ്ററിംഗ് പ്രോഗ്രാമാണ് ടൈംഔട്ട് സ്ക്രിപ്റ്റ്. ചുവടെയുള്ള കമന്റ് ഫോം വഴി നിങ്ങൾക്ക് കാലഹരണപ്പെട്ട സ്uക്രിപ്uറ്റിനെക്കുറിച്ച് ഞങ്ങൾക്ക് ഫീഡ്uബാക്ക് നൽകാം.