ലിനക്സ് പ്രോസസ്സ് മുൻഗണന എങ്ങനെ ക്രമീകരിക്കാം നല്ലതും രെനിസ് കമാൻഡുകൾ ഉപയോഗിച്ച്


ഈ ലേഖനത്തിൽ, ഈ ഗൈഡിന്റെ പരിധിക്കപ്പുറമുള്ള വിഷയങ്ങളായ കേർണൽ ഷെഡ്യൂളറും (പ്രോസസ് ഷെഡ്യൂളർ എന്നും അറിയപ്പെടുന്നു), പ്രോസസ് മുൻഗണനയും ഞങ്ങൾ ഹ്രസ്വമായി വിശദീകരിക്കും. തുടർന്ന് ഞങ്ങൾ ലിനക്സ് പ്രോസസ്സ് മാനേജ്മെന്റിന്റെ അൽപ്പം മുഴുകും: പരിഷ്കരിച്ച മുൻഗണനയോടെ ഒരു പ്രോഗ്രാമോ കമാൻഡോ എങ്ങനെ പ്രവർത്തിപ്പിക്കാമെന്ന് കാണുക, കൂടാതെ ലിനക്സ് പ്രോസസ്സുകൾ പ്രവർത്തിപ്പിക്കുന്നതിന്റെ മുൻഗണനയും മാറ്റുക.

ഇതും വായിക്കുക: എങ്ങനെ ലിനക്സ് പ്രക്രിയകൾ നിരീക്ഷിക്കുകയും ഓരോ ഉപയോക്താവിന്റെ അടിസ്ഥാനത്തിൽ പ്രോസസ്സ് പരിധികൾ ക്രമീകരിക്കുകയും ചെയ്യാം

ഒരു കേർണൽ ഷെഡ്യൂളർ എന്നത് കേർണലിന്റെ ഒരു യൂണിറ്റാണ്, അത് അടുത്തത് എക്സിക്യൂട്ട് ചെയ്യാൻ എല്ലാ റൺ ചെയ്യാവുന്ന പ്രക്രിയകളിൽ നിന്നും ഏറ്റവും അനുയോജ്യമായ പ്രക്രിയ നിർണ്ണയിക്കുന്നു; ഇത് ഒരു സിസ്റ്റത്തിലെ റൺ ചെയ്യാവുന്ന പ്രക്രിയകൾക്കിടയിൽ പ്രോസസ്സർ സമയം അനുവദിക്കുന്നു. CPU സമയത്തിനായി മാത്രം കാത്തിരിക്കുന്ന ഒന്നാണ് റൺ ചെയ്യാവുന്ന പ്രക്രിയ, അത് നടപ്പിലാക്കാൻ തയ്യാറാണ്.

സിസ്റ്റത്തിലെ റൺ ചെയ്യാവുന്ന പ്രക്രിയകൾക്കിടയിൽ തിരഞ്ഞെടുക്കുന്നതിന് മുൻഗണന അടിസ്ഥാനമാക്കിയുള്ള ഷെഡ്യൂളിംഗ് അൽഗോരിതം ഉപയോഗിച്ച്, ഷെഡ്യൂളർ ലിനക്സിലെ മൾട്ടിടാസ്കിംഗിന്റെ കാതൽ രൂപപ്പെടുത്തുന്നു. ഏറ്റവും അർഹതയുള്ളതും സിപിയു സമയത്തിന്റെ ആവശ്യകതയും അടിസ്ഥാനമാക്കി ഇത് പ്രക്രിയകളെ റാങ്ക് ചെയ്യുന്നു.

കേർണൽ പ്രോസസ് മുൻഗണന ഉൾപ്പെടെയുള്ള പ്രക്രിയകളെക്കുറിച്ചുള്ള ധാരാളം വിവരങ്ങൾ സംഭരിക്കുന്നു, ഇത് ഒരു പ്രക്രിയയുമായി ഘടിപ്പിച്ചിരിക്കുന്ന ഷെഡ്യൂളിംഗ് മുൻഗണനയാണ്. ഉയർന്ന മുൻഗണനയുള്ള പ്രക്രിയകൾ കുറഞ്ഞ മുൻഗണനയുള്ളവയ്uക്ക് മുമ്പായി നിർവ്വഹിക്കും, അതേ മുൻuഗണനയുള്ള പ്രക്രിയകൾ ഒന്നിനു പുറകെ ഒന്നായി ആവർത്തിച്ച് ഷെഡ്യൂൾ ചെയ്യപ്പെടും.

ലിനക്സിൽ ആകെ 140 മുൻഗണനകളും രണ്ട് വ്യത്യസ്ത മുൻഗണനാ ശ്രേണികളും നടപ്പിലാക്കിയിട്ടുണ്ട്. ആദ്യത്തേത് -20 (ഏറ്റവും ഉയർന്ന മുൻഗണനാ മൂല്യം) മുതൽ 19 (ഏറ്റവും കുറഞ്ഞ മുൻഗണന മൂല്യം) വരെയുള്ള ഒരു നല്ല മൂല്യമാണ് (നല്ലത്), സ്ഥിരസ്ഥിതി 0< ആണ്., ഇതാണ് ഈ ഗൈഡിൽ ഞങ്ങൾ കണ്ടെത്തുന്നത്. മറ്റൊന്ന് തത്സമയ മുൻഗണനയാണ്, അത് ഡിഫോൾട്ടായി 1 മുതൽ 99 വരെയാണ്, തുടർന്ന് 100 മുതൽ 139 വരെ ഉപയോക്തൃ-സ്പേസിനായി ഉദ്ദേശിച്ചുള്ളതാണ്.

ലിനക്സിന്റെ ഒരു പ്രധാന സ്വഭാവം ഡൈനാമിക് പ്രയോറിറ്റി അധിഷ്ഠിത ഷെഡ്യൂളിംഗ് ആണ്, ഇത് നിങ്ങളുടെ ആവശ്യങ്ങൾക്കനുസരിച്ച് പ്രോസസ്സുകളുടെ നല്ല മൂല്യം മാറ്റാൻ (വർദ്ധിപ്പിക്കുകയോ കുറയ്ക്കുകയോ) അനുവദിക്കുന്നു, അത് ഞങ്ങൾ പിന്നീട് കാണും.

ലിനക്സ് പ്രോസസ്സുകളുടെ നല്ല മൂല്യം എങ്ങനെ പരിശോധിക്കാം

പ്രോസസ്സുകളുടെ നല്ല മൂല്യങ്ങൾ കാണുന്നതിന്, നമുക്ക് htop പോലുള്ള യൂട്ടിലിറ്റികൾ ഉപയോഗിക്കാം.

ഉപയോക്തൃ-നിർവചിച്ച ഫോർമാറ്റിൽ ps കമാൻഡ് ഉപയോഗിച്ച് പ്രോസസ്സുകൾ നല്ല മൂല്യം കാണുന്നതിന് (ഇവിടെ NI കോളം പ്രോസസ്സുകളുടെ ഭംഗി കാണിക്കുന്നു).

$ ps -eo pid,ppid,ni,comm

പകരമായി, കാണിച്ചിരിക്കുന്നതുപോലെ ലിനക്സ് പ്രോസസ്സുകൾ നല്ല മൂല്യങ്ങൾ കാണുന്നതിന് നിങ്ങൾക്ക് ടോപ്പ് അല്ലെങ്കിൽ എച്ച്ടോപ്പ് യൂട്ടിലിറ്റികൾ ഉപയോഗിക്കാം.

$ top
$ htop

മുകളിലെ മുകളിൽ നിന്നും htop ഔട്ട്uപുട്ടുകളിൽ നിന്നും, ഒരു പ്രോസസിന്റെ മുൻഗണന കാണിക്കുന്ന PR, PRI എന്നീ കോളം ഉണ്ടെന്ന് നിങ്ങൾ ശ്രദ്ധിക്കും.

അതിനാൽ, ഇത് അർത്ഥമാക്കുന്നത്:

  • NI – നല്ല മൂല്യമാണ്, ഇത് ഒരു ഉപയോക്തൃ-സ്പേസ് ആശയമാണ്, അതേസമയം
  • PR അല്ലെങ്കിൽ PRI - Linux കേർണൽ കാണുന്നത് പോലെ, പ്രക്രിയയുടെ യഥാർത്ഥ മുൻഗണനയാണ്.

Total number of priorities = 140
Real time priority range(PR or PRI):  0 to 99 
User space priority range: 100 to 139

നല്ല മൂല്യ പരിധി (NI): -20 മുതൽ 19 വരെ

PR = 20 + NI
PR = 20 + (-20 to + 19)
PR = 20 + -20  to 20 + 19
PR = 0 to 39 which is same as 100 to 139.

എന്നാൽ ചുവടെയുള്ള സ്ക്രീൻഷോട്ടിൽ കാണിച്ചിരിക്കുന്നതുപോലെ ഒരു അക്കത്തിനുപകരം ഒരു rt ആണ് നിങ്ങൾ കാണുന്നതെങ്കിൽ, അത് അടിസ്ഥാനപരമായി അർത്ഥമാക്കുന്നത് ഈ പ്രക്രിയ തത്സമയ ഷെഡ്യൂളിംഗ് മുൻഗണനയിലാണ് പ്രവർത്തിക്കുന്നത് എന്നാണ്.

ലിനക്സിൽ നൽകിയിരിക്കുന്ന നല്ല മൂല്യമുള്ള ഒരു കമാൻഡ് എങ്ങനെ പ്രവർത്തിപ്പിക്കാം

ഇവിടെ, ഒരു പ്രോഗ്രാമിന്റെയോ കമാൻഡിന്റെയോ സിപിയു ഉപയോഗത്തിന് എങ്ങനെ മുൻഗണന നൽകാമെന്ന് നോക്കാം. നിങ്ങൾക്ക് വളരെ സിപിയു-ഇന്റൻസീവ് പ്രോഗ്രാമോ ടാസ്uക്കോ ഉണ്ടെങ്കിൽ, അത് പൂർത്തിയാക്കാൻ വളരെയധികം സമയമെടുക്കുമെന്ന് നിങ്ങൾ മനസ്സിലാക്കുന്നുവെങ്കിൽ, നല്ല കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് അത് ഉയർന്നതോ അനുകൂലമോ ആയ മുൻഗണനയായി സജ്ജമാക്കാൻ കഴിയും.

വാക്യഘടന ഇപ്രകാരമാണ്:

$ nice -n niceness-value [command args] 
OR
$ nice -niceness-value [command args] 	#it’s confusing for negative values
OR
$ nice --adjustment=niceness-value [command args]

പ്രധാനപ്പെട്ടത്:

  • മൂല്യമൊന്നും നൽകിയിട്ടില്ലെങ്കിൽ, നൈസ് ഡിഫോൾട്ടായി 10 ന്റെ മുൻഗണന സജ്ജമാക്കുന്നു.
  • ഒരു കമാൻഡ് അല്ലെങ്കിൽ പ്രോഗ്രാം നല്ല ഡിഫോൾട്ടുകളില്ലാതെ പൂജ്യത്തിന് മുൻഗണന നൽകുന്നു.
  • കൂടുതൽ അല്ലെങ്കിൽ ഉയർന്ന മുൻഗണനയോടെ ഒരു കമാൻഡോ പ്രോഗ്രാമോ പ്രവർത്തിപ്പിക്കാൻ റൂട്ടിന് മാത്രമേ കഴിയൂ.
  • സാധാരണ ഉപയോക്താക്കൾക്ക് കുറഞ്ഞ മുൻഗണനയിൽ ഒരു കമാൻഡോ പ്രോഗ്രാമോ മാത്രമേ പ്രവർത്തിപ്പിക്കാൻ കഴിയൂ.

ഉദാഹരണത്തിന്, ഡിഫോൾട്ട് മുൻuഗണനയോടെ ഒരു പ്രോഗ്രാമോ കമാൻഡോ ആരംഭിക്കുന്നതിനുപകരം, ഇനിപ്പറയുന്ന നൈസ് കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഒരു നിർദ്ദിഷ്ട മുൻuഗണനയോടെ അത് ആരംഭിക്കാൻ കഴിയും.

$ sudo nice -n 5 tar -czf backup.tar.gz ./Documents/*
OR
$ sudo nice --adjustment=5 tar -czf backup.tar.gz ./Documents/*

പ്രത്യേകിച്ച് നെഗറ്റീവ് നൈസ്നസ് മൂല്യങ്ങൾക്ക് അൽപ്പം ആശയക്കുഴപ്പമുണ്ടാക്കുന്ന മൂന്നാമത്തെ രീതിയും നിങ്ങൾക്ക് ഉപയോഗിക്കാം.

$ sudo nice -5 tar -czf backup.tar.gz  ./Documents/*

ലിനക്സിലെ ഒരു പ്രക്രിയയുടെ ഷെഡ്യൂളിംഗ് മുൻഗണന മാറ്റുക

ഞങ്ങൾ മുമ്പ് സൂചിപ്പിച്ചതുപോലെ, ഡൈനാമിക് മുൻഗണന അടിസ്ഥാനമാക്കിയുള്ള ഷെഡ്യൂളിംഗ് ലിനക്സ് അനുവദിക്കുന്നു. അതിനാൽ, ഒരു പ്രോഗ്രാം ഇതിനകം പ്രവർത്തിക്കുകയാണെങ്കിൽ, ഈ ഫോമിലെ റെനിസ് കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് അതിന്റെ മുൻഗണന മാറ്റാം:

$ renice -n  -12  -p 1055
$ renice -n -2  -u apache

ചുവടെയുള്ള സാമ്പിൾ ടോപ്പ് ഔട്ട്uപുട്ടിൽ നിന്ന്, PID 1055 ഉള്ള teamspe+ ന്റെ നൈസ്uനെസ് ഇപ്പോൾ -12 ആണ്, കൂടാതെ ഉപയോക്തൃ അപ്പാച്ചെയുടെ ഉടമസ്ഥതയിലുള്ള എല്ലാ പ്രോസസ്സുകൾക്കും -2 ആണ്.

ഇപ്പോഴും ഈ ഔട്ട്പുട്ട് ഉപയോഗിക്കുമ്പോൾ, നിങ്ങൾക്ക് PR = 20 + NI സ്റ്റാൻഡുകൾ ഫോർമുല കാണാൻ കഴിയും,

PR for ts3server = 20 + -12 = 8
PR for apache processes = 20 + -2 = 18

റെനിസ് കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങൾ ഒരു ഉപയോക്താവിന്റെ പ്രോസസ്സുകളിൽ വരുത്തുന്ന ഏതൊരു മാറ്റവും നല്ല മൂല്യങ്ങൾ അടുത്ത റീബൂട്ട് വരെ മാത്രമേ ബാധകമാകൂ. സ്ഥിരമായ സ്ഥിര മൂല്യങ്ങൾ സജ്ജീകരിക്കാൻ, അടുത്ത വിഭാഗം വായിക്കുക.

ഒരു നിർദ്ദിഷ്uട ഉപയോക്താവിന്റെ പ്രക്രിയകളുടെ ഡിഫോൾട്ട് നല്ല മൂല്യം എങ്ങനെ സജ്ജീകരിക്കാം

നിങ്ങൾക്ക് /etc/security/limits.conf ഫയലിൽ ഒരു പ്രത്യേക ഉപയോക്താവിന്റെയോ ഗ്രൂപ്പിന്റെയോ സ്ഥിരസ്ഥിതി മൂല്യം സജ്ജമാക്കാൻ കഴിയും. PAM വഴി ലോഗിൻ ചെയ്തിട്ടുള്ള ഉപയോക്താക്കൾക്കുള്ള റിസോഴ്സ് പരിധികൾ നിർവചിക്കുക എന്നതാണ് ഇതിന്റെ പ്രാഥമിക പ്രവർത്തനം.

ഒരു ഉപയോക്താവിനുള്ള പരിധി നിർവചിക്കുന്നതിനുള്ള വാക്യഘടന ഇപ്രകാരമാണ് (കൂടാതെ വിവിധ നിരകളുടെ സാധ്യമായ മൂല്യങ്ങൾ ഫയലിൽ വിശദീകരിച്ചിരിക്കുന്നു):

#<domain>   <type>  <item>  <value>

ഇപ്പോൾ താഴെയുള്ള വാക്യഘടന ഉപയോഗിക്കുക, അവിടെ ഹാർഡ് - അതായത് ഹാർഡ് ലിങ്കുകളും സോഫ്റ്റ് മാർഗങ്ങളും - സോഫ്റ്റ് പരിധികൾ നടപ്പിലാക്കുക.

<username>  <hard|soft>  priority  <nice value>

പകരമായി, മുകളിലെ പ്രധാന ഫയലിലെ ക്രമീകരണങ്ങളെ അസാധുവാക്കുന്ന /etc/security/limits.d/ എന്നതിന് കീഴിൽ ഒരു ഫയൽ സൃഷ്uടിക്കുക, ഈ ഫയലുകൾ അക്ഷരമാലാക്രമത്തിൽ വായിക്കും.

ഉപയോക്തൃ tecmint-നായി ഫയൽ /etc/security/limits.d/tecmint-priority.conf സൃഷ്ടിച്ചുകൊണ്ട് ആരംഭിക്കുക:

# vi /etc/security/limits.d/tecmint-priority.conf

തുടർന്ന് അതിൽ ഈ കോൺഫിഗറേഷൻ ചേർക്കുക:

tecmint  hard  priority  10

ഫയൽ സംരക്ഷിച്ച് അടയ്ക്കുക. ഇനി മുതൽ, tecmint-ന്റെ ഉടമസ്ഥതയിലുള്ള ഏതൊരു പ്രോസസ്സിനും നല്ല മൂല്യം 10 ഉം PR 30 ഉം ഉണ്ടായിരിക്കും.

കൂടുതൽ വിവരങ്ങൾക്ക്, നൈസ് ആൻഡ് റെനിസ് എന്ന മാൻ പേജുകൾ വായിക്കുക:

$ man nice
$ man renice 

Linux പ്രോസസ്സ് മാനേജ്uമെന്റിനെക്കുറിച്ചുള്ള ഇനിപ്പറയുന്ന ലേഖനങ്ങൾ വായിക്കാനും നിങ്ങൾ ആഗ്രഹിച്ചേക്കാം.

  1. ലിനക്സിൽ റണ്ണിംഗ് പ്രോസസുകൾ എങ്ങനെ കണ്ടെത്താം, ഇല്ലാതാക്കാം
  2. Linux-ൽ ഒരു പ്രക്രിയ അവസാനിപ്പിക്കുന്നതിനുള്ള കമാൻഡുകൾ, Pkill, Killall എന്നിവയ്ക്കുള്ള ഒരു ഗൈഡ്
  3. സിസ്റ്റം ഉപയോഗം, ഔട്ടേജുകൾ, ലിനക്സ് സെർവറുകൾ ട്രബിൾഷൂട്ട് എന്നിവ എങ്ങനെ നിരീക്ഷിക്കാം
  4. CPUTool - Linux-ലെ ഏത് പ്രക്രിയയുടെയും CPU ഉപയോഗം പരിമിതപ്പെടുത്തുകയും നിയന്ത്രിക്കുകയും ചെയ്യുക

ഈ ലേഖനത്തിൽ, കേർണൽ ഷെഡ്യൂളർ, പ്രോസസ്സ് മുൻഗണന, പരിഷ്കരിച്ച മുൻഗണനയോടെ ഒരു പ്രോഗ്രാമോ കമാൻഡോ എങ്ങനെ പ്രവർത്തിപ്പിക്കാമെന്നും സജീവമായ ലിനക്സ് പ്രക്രിയകളുടെ മുൻഗണന മാറ്റുന്നത് എങ്ങനെയെന്നും ഞങ്ങൾ ഹ്രസ്വമായി വിശദീകരിച്ചു. ചുവടെയുള്ള ഫീഡ്uബാക്ക് ഫോം വഴി ഈ വിഷയത്തെക്കുറിച്ചുള്ള ഏത് ചിന്തകളും നിങ്ങൾക്ക് പങ്കിടാം.