Kā uzlikt lielu procesora slodzi un stresa testu Linux, izmantojot rīku Stress-ng


Kā sistēmas administrators, iespējams, vēlēsities pārbaudīt un pārraudzīt savu Linux sistēmu stāvokli, kad tās ir pakļautas lielai slodzei. Tas var būt labs veids, kā sistēmas administratoriem un programmētājiem:

  1. pilnveidot darbības sistēmā.
  2. uzraudzīt operētājsistēmas kodola saskarnes.
  3. pārbaudiet Linux aparatūras komponentus, piemēram, procesoru, atmiņu, diska ierīces un daudzus citus, lai novērotu to veiktspēju stresa apstākļos.
  4. izmērīt dažādas enerģijas patērējošās slodzes sistēmā.

Šajā rokasgrāmatā mēs aplūkosim divus svarīgus rīkus, stresu un stresa līmeni stresa testēšanai jūsu Linux sistēmās.

1. stress - ir darba slodzes ģeneratora rīks, kas paredzēts jūsu sistēmas pakļaušanai konfigurējamam procesora, atmiņas, I/O un diska stresa mēram.

2. stress-ng - ir atjaunināta stresa slodzes ģeneratora rīka versija, kas pārbauda jūsu sistēmu šādām funkcijām:

  1. CPU aprēķins
  2. vadīt stresu
  3. I/O sinhronizācija
  4. cauruļu I/O
  5. kešatmiņas sagrūšana
  6. VM stress
  7. strāvas ligzda
  8. procesa izveide un pārtraukšana
  9. konteksta pārslēgšanas īpašības

Lai gan šie rīki ir piemēroti, lai pārbaudītu jūsu sistēmu, tos nevajadzētu izmantot tikai jebkuram sistēmas lietotājam.

Svarīgi: ir ļoti ieteicams izmantot šos rīkus ar root lietotāja tiesībām, jo tie var tik ātri uzspiest jūsu Linux mašīnu un izvairīties no noteiktām sistēmas kļūdām slikti izstrādātā aparatūrā.

Kā instalēt ‘stress’ rīku Linux

Lai instalētu stresa rīku Debianā un tā atvasinājumos, piemēram, Ubuntu un Mint, palaidiet šādu komandu.

$ sudo apt-get install stress

Lai instalētu stresu RHEL/CentOS un Fedora Linux, jums jāieslēdz EPEL krātuve un pēc tam ierakstiet šādu komandu yum, lai instalētu to pašu:

# yum install stress

Vispārējā stresa lietošanas sintakse ir šāda:

$ sudo stress option argument

Dažas iespējas, kuras varat izmantot ar stresu.

  1. Lai radītu N darbiniekus, kuri griežas uz sqrt() funkcijas, izmantojiet opciju –cpu N šādi.
  2. Lai radītu N darbiniekus, kuri griežas uz sinhronizācijas() funkcijas, izmantojiet opciju –io N šādi.
  3. Lai radītu N darbiniekus, kuri griežas ar malloc()/free() funkcijām, izmantojiet opciju –vm N.
  4. Lai piešķirtu atmiņu katram darbiniekam, izmantojiet opciju –vm-baiti N.
  5. Tā vietā, lai atbrīvotu un pārdalītu atmiņas resursus, jūs varat atjaunot atmiņu, izmantojot opciju –vm-keep.
  6. Pirms atmiņas atbrīvošanas iestatiet miega režīmu N sekundes, izmantojot opciju –vm-hang N.
  7. Lai radītu N darbiniekus, kuri griežas rakstīšanas()/atsaistīšanas() funkcijās, izmantojiet opciju –hdd N.
  8. Varat iestatīt taimautu pēc N sekundēm, izmantojot opciju –outout N.
  9. Iestatiet gaidīšanas koeficientu N mikrosekundes pirms jebkura darba sākuma, izmantojot –backoff N opciju šādi.
  10. Lai parādītu detalizētāku informāciju stresa laikā, izmantojiet opciju -v.
  11. Izmantojiet –help, lai skatītu palīdzību stresa lietošanā, vai skatiet manu lapu.

1. Lai pārbaudītu komandas efektu katru reizi, kad to palaižat, vispirms palaidiet komandu Uptime un pierakstiet vidējo slodzes rādītāju.

Pēc tam izpildiet stresa komandu, lai nārstotu 8 darbiniekus, kuri griežas uz sqrt() ar noildzi 20 sekundes. Pēc stresa palaišanas vēlreiz palaidiet uptime komandu un salīdziniet vidējo slodzi.

[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. Lai nārstotu 8 darbiniekus, kuri griežas uz sqrt() ar 30 sekunžu noildzi, parādot detalizētu informāciju par darbību, izpildiet šo komandu:

[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. Lai izvilktu vienu malloc() un free() funkciju strādnieku ar noildzi 60 sekundes, izpildiet šādu komandu.

[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. Lai izspēlētu 4 darbiniekus, kuri griežas uz sqrt(), 2 darbiniekus, kas darbojas sinhronizācijā(), 2 darbiniekus, kas strādā ar sinhronizāciju(), ar laiku no 20 sekundēm, un piešķiriet 256 MB atmiņu uz katru strādājošo, palaidiet šo komandu zemāk.

[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]