സ്ട്രെസ്-എൻജി ടൂൾ ഉപയോഗിച്ച് ലിനക്സിൽ ഉയർന്ന സിപിയു ലോഡും സ്ട്രെസ് ടെസ്റ്റും എങ്ങനെ ചുമത്താം


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

  1. ഒരു സിസ്റ്റത്തിലെ ഫൈൻ ട്യൂൺ പ്രവർത്തനങ്ങൾ.
  2. ഓപ്പറേറ്റിംഗ് സിസ്റ്റം കേർണൽ ഇന്റർഫേസുകൾ നിരീക്ഷിക്കുക.
  3. നിങ്ങളുടെ Linux ഹാർഡ്uവെയർ ഘടകങ്ങളായ CPU, മെമ്മറി, ഡിസ്uക് ഉപകരണങ്ങൾ എന്നിവയും മറ്റ് പലതും സമ്മർദ്ദത്തിൽ അവയുടെ പ്രകടനം നിരീക്ഷിക്കാൻ പരിശോധിക്കുക.
  4. ഒരു സിസ്റ്റത്തിലെ വിവിധ വൈദ്യുതി ഉപഭോഗ ലോഡുകൾ അളക്കുക.

ഈ ഗൈഡിൽ, നിങ്ങളുടെ ലിനക്സ് സിസ്റ്റത്തിന് കീഴിലുള്ള സ്ട്രെസ് ടെസ്റ്റിംഗിനുള്ള സ്ട്രെസ്, സ്ട്രെസ്-എൻജി എന്നീ രണ്ട് പ്രധാന ടൂളുകൾ ഞങ്ങൾ നോക്കും.

1. സമ്മർദ്ദം - സിപിയു, മെമ്മറി, ഐ/ഒ, ഡിസ്ക് സ്ട്രെസ് എന്നിവയുടെ കോൺഫിഗർ ചെയ്യാവുന്ന അളവിന് നിങ്ങളുടെ സിസ്റ്റത്തെ വിധേയമാക്കാൻ രൂപകൽപ്പന ചെയ്ത ഒരു വർക്ക്ലോഡ് ജനറേറ്റർ ടൂളാണ്.

2. സ്uട്രെസ്-എൻജി - സ്ട്രെസ് വർക്ക്uലോഡ് ജനറേറ്റർ ടൂളിന്റെ അപ്uഡേറ്റ് ചെയ്ത പതിപ്പാണ്, ഇത് ഇനിപ്പറയുന്ന സവിശേഷതകൾക്കായി നിങ്ങളുടെ സിസ്റ്റത്തെ പരിശോധിക്കുന്നു:

  1. സിപിയു കമ്പ്യൂട്ട്
  2. ഡ്രൈവ് സമ്മർദ്ദം
  3. I/O സമന്വയം
  4. പൈപ്പ് I/O
  5. കാഷെ ത്രഷിംഗ്
  6. VM സമ്മർദ്ദം
  7. സോക്കറ്റ് സമ്മർദ്ദം
  8. പ്രക്രിയ സൃഷ്ടിക്കലും അവസാനിപ്പിക്കലും
  9. സന്ദർഭ സ്വിച്ചിംഗ് പ്രോപ്പർട്ടികൾ

നിങ്ങളുടെ സിസ്റ്റം പരിശോധിക്കുന്നതിന് ഈ ടൂളുകൾ നല്ലതാണെങ്കിലും, അവ ഏതെങ്കിലും സിസ്റ്റം ഉപയോക്താവ് മാത്രം ഉപയോഗിക്കാൻ പാടില്ല.

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

ലിനക്സിൽ ‘സ്ട്രെസ്’ ടൂൾ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം

ഡെബിയനിലും അതിന്റെ ഡെറിവേറ്റീവുകളായ ഉബുണ്ടു, മിന്റ് എന്നിവയിലും സ്ട്രെസ് ടൂൾ ഇൻസ്റ്റാൾ ചെയ്യുന്നതിന്, ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

$ sudo apt-get install stress

ഒരു RHEL/CentOS, Fedora Linux എന്നിവയിൽ സ്ട്രെസ്സ് ഇൻസ്റ്റാൾ ചെയ്യുന്നതിന്, നിങ്ങൾ EPEL ശേഖരണം ഓണാക്കേണ്ടതുണ്ട്, തുടർന്ന് ഇത് ഇൻസ്റ്റാൾ ചെയ്യാൻ ഇനിപ്പറയുന്ന yum കമാൻഡ് ടൈപ്പ് ചെയ്യുക:

# yum install stress

സമ്മർദ്ദം ഉപയോഗിക്കുന്നതിനുള്ള പൊതു വാക്യഘടന ഇതാണ്:

$ sudo stress option argument

സമ്മർദ്ദത്തിൽ നിങ്ങൾക്ക് ഉപയോഗിക്കാവുന്ന ചില ഓപ്ഷനുകൾ.

  1. sqrt() ഫംഗ്uഷനിൽ കറങ്ങുന്ന N വർക്കേഴ്uസ് സ്uപോൺ ചെയ്യാൻ, ഇനിപ്പറയുന്ന രീതിയിൽ –cpu N ഓപ്ഷൻ ഉപയോഗിക്കുക.
  2. സമന്വയം() ഫംഗ്uഷനിൽ കറങ്ങുന്ന N വർക്കേഴ്uസ് സ്uപോൺ ചെയ്യാൻ, ഇനിപ്പറയുന്ന രീതിയിൽ –io N ഓപ്ഷൻ ഉപയോഗിക്കുക.
  3. malloc()/free() ഫംഗ്uഷനുകളിൽ സ്പിന്നിംഗ് ചെയ്യുന്ന N വർക്കർമാരെ സൃഷ്ടിക്കാൻ, –vm N ഓപ്ഷൻ ഉപയോഗിക്കുക.
  4. ഓരോ vm തൊഴിലാളിക്കും മെമ്മറി അനുവദിക്കാൻ, –vm-bytes N ഓപ്ഷൻ ഉപയോഗിക്കുക.
  5. മെമ്മറി റിസോഴ്uസുകൾ സ്വതന്ത്രമാക്കുന്നതിനും വീണ്ടും അനുവദിക്കുന്നതിനുപകരം, –vm-keep ഓപ്uഷൻ ഉപയോഗിച്ച് നിങ്ങൾക്ക് മെമ്മറി റിഡർട്ടി ചെയ്യാം.
  6. -vm-hang N ഓപ്uഷൻ ഉപയോഗിച്ച് മെമ്മറി സ്വതന്ത്രമാക്കുന്നതിന് മുമ്പ് N-ലേക്ക് ഉറക്കം സജ്ജമാക്കുക.
  7. എഴുത്ത്()/അൺലിങ്ക്() ഫംഗ്ഷനുകളിൽ സ്പിന്നിംഗ് ചെയ്യുന്ന N തൊഴിലാളികളെ സൃഷ്ടിക്കാൻ, –hdd N ഓപ്ഷൻ ഉപയോഗിക്കുക.
  8. -ടൈംഔട്ട് N ഓപ്uഷൻ ഉപയോഗിച്ച് നിങ്ങൾക്ക് N സെക്കൻഡുകൾക്ക് ശേഷം ഒരു ടൈംഔട്ട് സജ്ജീകരിക്കാം.
  9. ഒരു ജോലി ആരംഭിക്കുന്നതിന് മുമ്പ് N മൈക്രോസെക്കൻഡ് ഒരു കാത്തിരിപ്പ് ഘടകം ഇനിപ്പറയുന്ന രീതിയിൽ –backoff N ഓപ്ഷൻ ഉപയോഗിച്ച് സജ്ജമാക്കുക.
  10. സ്ട്രെസ് പ്രവർത്തിക്കുമ്പോൾ കൂടുതൽ വിശദമായ വിവരങ്ങൾ കാണിക്കാൻ, -v ഓപ്ഷൻ ഉപയോഗിക്കുക.
  11. സമ്മർദ്ദം ഉപയോഗിക്കുന്നതിനുള്ള സഹായം കാണുന്നതിന് -സഹായം ഉപയോഗിക്കുക അല്ലെങ്കിൽ മാൻപേജ് കാണുക.

1. നിങ്ങൾ ഓരോ തവണയും കമാൻഡ് പ്രവർത്തിപ്പിക്കുമ്പോൾ അതിന്റെ പ്രഭാവം പരിശോധിക്കുന്നതിന്, ആദ്യം അപ്ടൈം കമാൻഡ് പ്രവർത്തിപ്പിച്ച് ലോഡ് ശരാശരി രേഖപ്പെടുത്തുക.

അടുത്തതായി, 20 സെക്കൻഡ് സമയപരിധിയോടെ sqrt() ൽ കറങ്ങുന്ന 8 തൊഴിലാളികളെ ജനിപ്പിക്കാൻ സ്ട്രെസ് കമാൻഡ് പ്രവർത്തിപ്പിക്കുക. സമ്മർദ്ദം പ്രവർത്തിപ്പിച്ചതിന് ശേഷം, വീണ്ടും അപ്ടൈം കമാൻഡ് പ്രവർത്തിപ്പിച്ച് ലോഡ് ശരാശരി താരതമ്യം ചെയ്യുക.

[email  ~ $ uptime
[email  ~ $ sudo stress --cpu  8 --timeout 20
[email  ~ $ uptime
[email  ~ $ uptime    
 17:20:00 up  7:51,  2 users,  load average: 1.91, 2.16, 1.93     [<-- Watch Load Average]
[email  ~ $ sudo stress --cpu 8 --timeout 20
stress: info: [17246] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: info: [17246] successful run completed in 21s
[email  ~ $ uptime
 17:20:24 up  7:51,  2 users,  load average: 5.14, 2.88, 2.17     [<-- Watch Load Average]

2. ഓപ്പറേഷനെക്കുറിച്ചുള്ള വിശദമായ വിവരങ്ങൾ കാണിക്കുന്ന 30 സെക്കൻഡ് സമയപരിധിയോടെ sqrt() ൽ കറങ്ങുന്ന 8 തൊഴിലാളികളെ സൃഷ്ടിക്കാൻ, ഈ കമാൻഡ് പ്രവർത്തിപ്പിക്കുക:

[email  ~ $ uptime
[email  ~ $ sudo stress --cpu 8 -v --timeout 30s
[email  ~ $ uptime
[email  ~ $ uptime
 17:27:25 up  7:58,  2 users,  load average: 1.40, 1.90, 1.98     [<-- Watch Load Average]
[email  ~ $ sudo stress --cpu 8 -v --timeout 30s
stress: info: [17353] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: dbug: [17353] using backoff sleep of 24000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 8 [17354] forked
stress: dbug: [17353] using backoff sleep of 21000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 7 [17355] forked
stress: dbug: [17353] using backoff sleep of 18000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 6 [17356] forked
stress: dbug: [17353] using backoff sleep of 15000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 5 [17357] forked
stress: dbug: [17353] using backoff sleep of 12000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 4 [17358] forked
stress: dbug: [17353] using backoff sleep of 9000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 3 [17359] forked
stress: dbug: [17353] using backoff sleep of 6000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 2 [17360] forked
stress: dbug: [17353] using backoff sleep of 3000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 1 [17361] forked
stress: dbug: [17353] [email  ~ $ uptime
 17:27:59 up  7:59,  2 users,  load average: 5.41, 2.82, 2.28     [<-- Watch Load Average]

3. malloc() ഉം free() ഫംഗ്uഷനുകളും 60 സെക്കൻഡ് സമയപരിധിയിൽ ഒരു വർക്കർ സ്uപാൻ ചെയ്യാൻ, ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

[email  ~ $ uptime
[email  ~ $ sudo stress --vm 1 --timeout 60s 
[email  ~ $ uptime
[email  ~ $ uptime
 17:34:07 up  8:05,  2 users,  load average: 1.54, 2.04, 2.11     [<-- Watch Load Average]
[email  ~ $ sudo stress --vm 1 --timeout 60s 
stress: info: [17420] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: info: [17420] successful run completed in 60s
[email  ~ $ uptime
 17:35:20 up  8:06,  2 users,  load average: 2.45, 2.24, 2.17     [<-- Watch Load Average]

4. sqrt(), 2 തൊഴിലാളികൾ സമന്വയം(), 2 തൊഴിലാളികൾ malloc()/free(), 20 സെക്കൻഡിൽ സ്പിന്നിംഗ് സ്uപാൻ ചെയ്യാനും ഓരോ vm തൊഴിലാളിക്കും 256MB മെമ്മറി അനുവദിക്കാനും, ഇത് പ്രവർത്തിപ്പിക്കുക. താഴെ കമാൻഡ്.

[email  ~ $ uptime
[email  ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s 
[email  ~ $ uptime
[email  ~ $ uptime
 17:40:33 up  8:12,  2 users,  load average: 1.68, 1.84, 2.02     [<-- Watch Load Average]
[email  ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s
stress: info: [17501] dispatching hogs: 4 cpu, 3 io, 2 vm, 0 hdd
stress: info: [17501] successful run completed in 20s
[email  ~ $ uptime
 17:40:58 up  8:12,  2 users,  load average: 4.63, 2.54, 2.24     [<-- Watch Load Average]