Cpustat - Linux-ൽ പ്രക്രിയകൾ പ്രവർത്തിപ്പിച്ച് CPU ഉപയോഗം നിരീക്ഷിക്കുന്നു


Go പ്രോഗ്രാമിംഗ് ഭാഷ ഉപയോഗിച്ച് എഴുതിയ, Linux-നുള്ള ഒരു ശക്തമായ സിസ്റ്റം പ്രകടന അളക്കൽ പ്രോഗ്രാമാണ് Cpustat. യൂട്ടിലൈസേഷൻ സാച്ചുറേഷൻ ആൻഡ് എറേഴ്സ് (യുഎസ്ഇ) രീതി (ഏത് സിസ്റ്റത്തിന്റെയും പ്രകടനത്തെ വിശകലനം ചെയ്യുന്നതിനുള്ള ഒരു രീതിശാസ്ത്രം) ഉപയോഗിച്ച് ഫലപ്രദമായ രീതിയിൽ സിപിയു ഉപയോഗവും സാച്ചുറേഷനും വെളിപ്പെടുത്താൻ ഇത് ശ്രമിക്കുന്നു.

ഇത് സിസ്റ്റത്തിൽ എക്സിക്യൂട്ട് ചെയ്യുന്ന ഓരോ പ്രക്രിയയുടെയും ഉയർന്ന ഫ്രീക്വൻസി സാമ്പിളുകൾ എക്uസ്uട്രാക്റ്റുചെയ്യുന്നു, തുടർന്ന് ഈ സാമ്പിളുകളെ കുറഞ്ഞ ആവൃത്തിയിൽ സംഗ്രഹിക്കുന്നു. ഉദാഹരണത്തിന്, ഇതിന് ഓരോ 200മി.സി.യിലും ഓരോ പ്രക്രിയയും അളക്കാനും ഓരോ 5 സെക്കൻഡിലും ഈ സാമ്പിളുകൾ സംഗ്രഹിക്കാനും കഴിയും, ചില മെട്രിക്കുകൾക്കുള്ള മിനി/ശരാശരി/പരമാവധി മൂല്യങ്ങൾ ഉൾപ്പെടെ.

സാധ്യമായ രണ്ട് വഴികളിലൂടെ Cpustat ഡാറ്റ ഔട്ട്പുട്ട് ചെയ്യുന്നു: സംഗ്രഹ ഇടവേളയുടെ ഒരു ശുദ്ധമായ ടെക്സ്റ്റ് ലിസ്റ്റും ഓരോ സാമ്പിളിന്റെയും വർണ്ണാഭമായ സ്ക്രോളിംഗ് ഡാഷ്ബോർഡും.

ലിനക്സിൽ Cpustat എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം

cpustat ഉപയോഗിക്കുന്നതിന്, നിങ്ങളുടെ Linux സിസ്റ്റത്തിൽ Go (GoLang) ഇൻസ്റ്റാൾ ചെയ്തിരിക്കണം, നിങ്ങൾ അത് ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ലെങ്കിൽ GoLang ഇൻസ്റ്റാളേഷൻ ഘട്ടങ്ങൾ പിന്തുടരുന്നതിന് ചുവടെയുള്ള ലിങ്കിൽ ക്ലിക്കുചെയ്യുക:

  1. Linux-ൽ GoLang (Go പ്രോഗ്രാമിംഗ് ലാംഗ്വേജ്) ഇൻസ്റ്റാൾ ചെയ്യുക

നിങ്ങൾ Go ഇൻസ്റ്റാൾ ചെയ്തുകഴിഞ്ഞാൽ, അത് ഇൻസ്റ്റാൾ ചെയ്യുന്നതിന് താഴെ go get കമാൻഡ് ടൈപ്പ് ചെയ്യുക, ഈ കമാൻഡ് നിങ്ങളുടെ GOBIN വേരിയബിളിൽ cpustat ബൈനറി ഇൻസ്റ്റാൾ ചെയ്യും:

# go get github.com/uber-common/cpustat

ലിനക്സിൽ Cpustat എങ്ങനെ ഉപയോഗിക്കാം

ഇൻസ്റ്റലേഷൻ പ്രക്രിയ പൂർത്തിയാകുമ്പോൾ, sudo കമാൻഡ് ഉപയോഗിച്ച് റൂട്ട് പ്രത്യേകാവകാശങ്ങൾ ഉപയോഗിച്ച് ഇനിപ്പറയുന്ന രീതിയിൽ cpustat പ്രവർത്തിപ്പിക്കുക, അതായത് നിങ്ങൾ ഒരു റൂട്ട് അല്ലാത്ത ഉപയോക്താവായി സിസ്റ്റം നിയന്ത്രിക്കുകയാണെങ്കിൽ, അല്ലെങ്കിൽ കാണിച്ചിരിക്കുന്നതുപോലെ നിങ്ങൾക്ക് പിശക് ലഭിക്കും:

$ $GOBIN/cpustat
This program uses the netlink taskstats interface, so it must be run as root.

ശ്രദ്ധിക്കുക: cpustat പ്രവർത്തിപ്പിക്കുന്നതിന്, മറ്റേതെങ്കിലും കമാൻഡുകൾ പോലെ നിങ്ങളുടെ സിസ്റ്റത്തിൽ നിങ്ങൾ ഇൻസ്റ്റാൾ ചെയ്തിട്ടുള്ള എല്ലാ Go പ്രോഗ്രാമുകളും പ്രവർത്തിപ്പിക്കുന്നതിന്, നിങ്ങളുടെ PATH എൻവയോൺമെന്റ് വേരിയബിളിൽ GOBIN വേരിയബിൾ ഉൾപ്പെടുത്തുക. Linux-ൽ PATH വേരിയബിൾ എങ്ങനെ സജ്ജീകരിക്കാം എന്നറിയാൻ താഴെയുള്ള ലിങ്ക് തുറക്കുക.

  1. Linux-ൽ നിങ്ങളുടെ PATH വേരിയബിളുകൾ ശാശ്വതമായി എങ്ങനെ സജ്ജീകരിക്കാമെന്ന് അറിയുക

cpustat പ്രവർത്തിക്കുന്നത് ഇങ്ങനെയാണ്; ഓരോ ഇടവേളയ്uക്കുമുള്ള പ്രോസസ്സ് ഐഡികളുടെ നിലവിലെ ലിസ്റ്റ് ലഭിക്കുന്നതിന് /proc ഡയറക്uടറി അന്വേഷിക്കുന്നു, കൂടാതെ:

  • ഓരോ PID-നും, /proc/pid/stat വായിക്കുക, തുടർന്ന് മുമ്പത്തെ സാമ്പിളിൽ നിന്നുള്ള വ്യത്യാസം കണക്കാക്കുക.
  • ഇതൊരു പുതിയ PID ആണെങ്കിൽ, /proc/pid/cmdline വായിക്കുക.
  • ഓരോ PID-നും, ടാസ്uക്uസ്റ്റാറ്റുകൾ ലഭ്യമാക്കുന്നതിനും മുമ്പത്തെ സാമ്പിളിൽ നിന്നുള്ള വ്യത്യാസം കണക്കാക്കുന്നതിനും ഒരു നെറ്റ്uലിങ്ക് സന്ദേശം അയയ്uക്കുക.
  • മൊത്തത്തിലുള്ള സിസ്റ്റം സ്ഥിതിവിവരക്കണക്കുകൾ ലഭിക്കുന്നതിന്
  • /proc/stat ലഭ്യമാക്കുക.

വീണ്ടും, ഓരോ ഉറക്ക ഇടവേളയും ഈ സ്ഥിതിവിവരക്കണക്കുകൾ ലഭ്യമാക്കുന്നതിന് എത്ര സമയം ചെലവഴിച്ചുവെന്ന് കണക്കാക്കുന്നു. കൂടാതെ, ഓരോ സാമ്പിളും സാമ്പിളുകൾക്കിടയിലുള്ള യഥാർത്ഥ കഴിഞ്ഞ സമയം കൊണ്ട് ഓരോ അളവും അളക്കാൻ എടുത്ത സമയവും രേഖപ്പെടുത്തുന്നു. ഇത് cpustat-ൽ തന്നെ കാലതാമസം വരുത്താൻ ശ്രമിക്കുന്നു.

ആർഗ്യുമെന്റുകളൊന്നുമില്ലാതെ പ്രവർത്തിപ്പിക്കുമ്പോൾ, cpustat സ്ഥിരസ്ഥിതിയായി ഇനിപ്പറയുന്നവ പ്രദർശിപ്പിക്കും: സാമ്പിൾ ഇടവേള: 200ms, സംഗ്രഹ ഇടവേള: 2സെ (10 സാമ്പിളുകൾ), മികച്ച 10 പ്രോക്കുകൾ കാണിക്കുന്നു, ഉപയോക്തൃ ഫിൽട്ടർ: എല്ലാം, pid ഫിൽട്ടർ: എല്ലാം ചുവടെയുള്ള സ്ക്രീൻഷോട്ടിൽ കാണിച്ചിരിക്കുന്നത് പോലെ:

$ sudo $GOBIN/cpustat 

മുകളിലുള്ള ഔട്ട്uപുട്ടിൽ നിന്ന്, ഫീൽഡുകൾക്ക് മുമ്പായി പ്രദർശിപ്പിച്ചിരിക്കുന്ന സിസ്റ്റം-വൈഡ് സംഗ്രഹ മെട്രിക്uസിന്റെ അർത്ഥങ്ങൾ ഇനിപ്പറയുന്നവയാണ്:

  • usr – min/avg/max ഉപയോക്തൃ മോഡ് റൺ സമയം ഒരു CPU-യുടെ ശതമാനമായി.
  • sys – min/avg/max സിസ്റ്റം മോഡ് റൺ സമയം ഒരു CPU-യുടെ ശതമാനമായി.
  • നല്ലത് – മിനി/ശരാശരി/പരമാവധി ഉപയോക്തൃ മോഡ് ഒരു സിപിയു-വിന്റെ ശതമാനമായി കുറഞ്ഞ മുൻഗണനയുള്ള റൺ ടൈം.
  • നിഷ്uക്രിയ - മിനി/ശരാശരി/പരമാവധി ഉപയോക്തൃ മോഡ് റൺ സമയം ഒരു സിപിയുവിന്റെ ശതമാനമായി.
  • iowait – min/avg/max കാലതാമസം ഡിസ്ക് IO-നായി കാത്തിരിക്കുന്നു.
  • പ്രൂൺ – റൺ ചെയ്യാവുന്ന അവസ്ഥയിലുള്ള പ്രക്രിയകളുടെ മിനി/ശരാശരി/പരമാവധി എണ്ണം (ലോഡ് ശരാശരിക്ക് തുല്യമാണ്).
  • pblock – min/avg/max പ്രോസസ്സുകളുടെ എണ്ണം ഡിസ്ക് IO-ൽ തടഞ്ഞിരിക്കുന്നു.
  • pstart – ഈ സംഗ്രഹ ഇടവേളയിൽ ആരംഭിച്ച പ്രോസസ്സുകളുടെ/ത്രെഡുകളുടെ എണ്ണം.

ഇപ്പോഴും മുകളിലുള്ള ഔട്ട്uപുട്ടിൽ നിന്ന്, തന്നിരിക്കുന്ന പ്രോസസ്സിനായി, വ്യത്യസ്ത നിരകൾ അർത്ഥമാക്കുന്നത്:

  • പേര് - /proc/pid/stat അല്ലെങ്കിൽ /proc/pid/cmdline-ൽ നിന്നുള്ള പൊതുവായ പ്രക്രിയ നാമം.
  • pid - പ്രോസസ്സ് ഐഡി, tgid എന്നും പരാമർശിക്കപ്പെടുന്നു.
  • മിനിറ്റ് - pid-നുള്ള ഉപയോക്തൃ+സിസ്റ്റം സമയത്തിന്റെ ഏറ്റവും കുറഞ്ഞ സാമ്പിൾ, /proc/pid/stat എന്നതിൽ നിന്ന് അളക്കുന്നു. സ്കെയിൽ ഒരു CPU-യുടെ ശതമാനമാണ്.
  • പരമാവധി - ഈ പിഡിനുള്ള ഉപയോക്തൃ+സിസ്റ്റം സമയത്തിന്റെ ഏറ്റവും ഉയർന്ന സാമ്പിൾ, /proc/pid/stat എന്നതിൽ നിന്നും അളക്കുന്നു.
  • usr - സംഗ്രഹ കാലയളവിൽ pid-ന്റെ ശരാശരി ഉപയോക്തൃ സമയം, /proc/pid/stat എന്നതിൽ നിന്ന് അളക്കുന്നു.
  • sys - സംഗ്രഹ കാലയളവിൽ pid-ന്റെ ശരാശരി സിസ്റ്റം സമയം, /proc/pid/stat എന്നതിൽ നിന്ന് അളക്കുന്നു.
  • നല്ലത് - /proc/pid/stat എന്നതിൽ നിന്ന് അളക്കുന്ന പ്രക്രിയയ്uക്കായുള്ള നിലവിലെ നല്ല മൂല്യം സൂചിപ്പിക്കുന്നു. ഉയർന്നത് എന്നാൽ നല്ലത് എന്നാണ്.
  • runq - പ്രക്രിയയുടെ സമയവും അതിന്റെ എല്ലാ ത്രെഡുകളും റൺ ചെയ്യാവുന്നതും എന്നാൽ പ്രവർത്തിപ്പിക്കാൻ കാത്തിരിക്കുന്നതും, നെറ്റ്uലിങ്ക് വഴി ടാസ്uക്uസ്റ്റാറ്റുകളിൽ നിന്ന് അളക്കുന്നു. സ്കെയിൽ ഒരു CPU-യുടെ ശതമാനമാണ്.
  • iow - ഡിസ്ക് IO വഴി ബ്ലോക്ക് ചെയ്uത പ്രോസസ്സും അതിന്റെ എല്ലാ ത്രെഡുകളും നെറ്റ്uലിങ്ക് വഴി ടാസ്uക്uസ്റ്റാറ്റുകളിൽ നിന്ന് അളക്കുന്ന സമയം. സ്കെയിൽ എന്നത് ഒരു സിപിയുവിന്റെ ശതമാനമാണ്, സംഗ്രഹ ഇടവേളയിൽ ശരാശരി.
  • സ്വാപ്പ് - നെറ്റ്uലിങ്ക് വഴി ടാസ്uക്uസ്റ്റാറ്റുകളിൽ നിന്ന് അളക്കുന്ന പ്രക്രിയയും അതിന്റെ എല്ലാ ത്രെഡുകളും സ്വാപ്പ് ചെയ്യാൻ കാത്തിരിക്കുന്ന സമയവും. സ്കെയിൽ എന്നത് ഒരു സിപിയുവിന്റെ ശതമാനമാണ്, സംഗ്രഹ ഇടവേളയിൽ ശരാശരി.
  • vcx, icx - നെറ്റ്uലിങ്ക് വഴി ടാസ്uക്uസ്റ്റാറ്റുകളിൽ നിന്ന് അളക്കുന്ന, സംഗ്രഹ ഇടവേളയിൽ പ്രോസസും അതിന്റെ എല്ലാ ത്രെഡുകളും വഴി സ്വമേധയാ ഉള്ള സന്ദർഭ സ്വിച്ചുകളുടെ ആകെ എണ്ണം.
  • rss – നിലവിലെ RSS മൂല്യം /proc/pid/stat എന്നതിൽ നിന്ന് ലഭിച്ചതാണ്. ഈ പ്രക്രിയ ഉപയോഗിക്കുന്ന മെമ്മറിയുടെ അളവാണിത്.
  • ctime – ഈ സംഗ്രഹ ഇടവേളയിൽ പുറത്തുകടന്ന കുട്ടികൾക്കായി കാത്തിരുന്ന ഉപയോക്താവ്+sys CPU സമയത്തിന്റെ തുക, /proc/pid/stat എന്നതിൽ നിന്ന് അളക്കുന്നു.

ദൈർഘ്യമേറിയ ചൈൽഡ് പ്രോസസ്സുകൾ പലപ്പോഴും ഈ അളവെടുപ്പിനെ ആശയക്കുഴപ്പത്തിലാക്കുമെന്നത് ശ്രദ്ധിക്കുക, കാരണം ചൈൽഡ് പ്രോസസ്സ് പുറത്തുകടക്കുമ്പോൾ മാത്രമേ സമയം റിപ്പോർട്ട് ചെയ്യപ്പെടുകയുള്ളൂ. എന്നിരുന്നാലും, സിപിയു സമയം പല ചൈൽഡ് പ്രോസസുകളും ഉപയോഗിക്കുന്ന പതിവ് ക്രോൺ ജോലികളുടെയും ആരോഗ്യ പരിശോധനകളുടെയും ആഘാതം അളക്കാൻ ഇത് ഉപയോഗപ്രദമാണ്.

  • മൂന്നാം - സംഗ്രഹ ഇടവേളയുടെ അവസാനത്തിലുള്ള ത്രെഡുകളുടെ എണ്ണം, /proc/pid/stat എന്നതിൽ നിന്ന് അളക്കുന്നു.
  • sam – സംഗ്രഹ ഇടവേളയിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന ഈ പ്രക്രിയയ്ക്കുള്ള സാമ്പിളുകളുടെ എണ്ണം. ഈയിടെ ആരംഭിച്ചതോ പുറത്തുകടന്നതോ ആയ പ്രക്രിയകൾ സംഗ്രഹ ഇടവേളയേക്കാൾ കുറച്ച് സാമ്പിളുകൾക്ക് ദൃശ്യമായേക്കാം.

സിസ്റ്റത്തിൽ പ്രവർത്തിക്കുന്ന മികച്ച 10 റൂട്ട് യൂസർ പ്രോസസ്സുകൾ താഴെ പറയുന്ന കമാൻഡ് പ്രദർശിപ്പിക്കുന്നു:

$ sudo $GOBIN/cpustat -u root

ഒരു ഫാൻസി ടെർമിനൽ മോഡിൽ ഔട്ട്പുട്ട് പ്രദർശിപ്പിക്കുന്നതിന്, ഇനിപ്പറയുന്ന രീതിയിൽ -t ഫ്ലാഗ് ഉപയോഗിക്കുക:

$ sudo $GOBIN/cpustat -u roo -t

സിസ്റ്റത്തിൽ പ്രവർത്തിക്കുന്ന മികച്ച 20 ലിനക്സ് പ്രക്രിയകൾ കാണുന്നതിന്:

$ sudo $GOBIN/cpustat -n 20 

നിങ്ങൾക്ക് ഇനിപ്പറയുന്ന രീതിയിൽ -cpuprofile ഓപ്ഷൻ ഉപയോഗിച്ച് ഒരു ഫയലിലേക്ക് CPU പ്രൊഫൈൽ എഴുതാം, തുടർന്ന് ഫയൽ കാണുന്നതിന് cat കമാൻഡ് ഉപയോഗിക്കുക:

$ sudo $GOBIN/cpustat -cpuprofile cpuprof.txt
$ cat cpuprof.txt

സഹായ വിവരങ്ങൾ പ്രദർശിപ്പിക്കുന്നതിന്, ഇനിപ്പറയുന്ന രീതിയിൽ -h ഫ്ലാഗ് ഉപയോഗിക്കുക:

$ sudo $GOBIN/cpustat -h

cpustat Github Repository-ൽ നിന്ന് കൂടുതൽ വിവരങ്ങൾ കണ്ടെത്തുക: https://github.com/uber-common/cpustat

അത്രയേയുള്ളൂ! ഈ ലേഖനത്തിൽ, Linux-നുള്ള ഉപയോഗപ്രദമായ സിസ്റ്റം പ്രകടന അളക്കൽ ഉപകരണമായ cpustat എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാമെന്നും ഉപയോഗിക്കാമെന്നും ഞങ്ങൾ കാണിച്ചുതന്നു. ചുവടെയുള്ള അഭിപ്രായ വിഭാഗത്തിലൂടെ നിങ്ങളുടെ ചിന്തകൾ ഞങ്ങളുമായി പങ്കിടുക.