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:
- pilnveidot darbības sistēmā.
- uzraudzīt operētājsistēmas kodola saskarnes.
- 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.
- 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:
- CPU aprēķins
- vadīt stresu
- I/O sinhronizācija
- cauruļu I/O
- kešatmiņas sagrūšana
- VM stress
- strāvas ligzda
- procesa izveide un pārtraukšana
- 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.
- Lai radītu N darbiniekus, kuri griežas uz sqrt() funkcijas, izmantojiet opciju –cpu N šādi.
- Lai radītu N darbiniekus, kuri griežas uz sinhronizācijas() funkcijas, izmantojiet opciju –io N šādi.
- Lai radītu N darbiniekus, kuri griežas ar malloc()/free() funkcijām, izmantojiet opciju –vm N.
- Lai piešķirtu atmiņu katram darbiniekam, izmantojiet opciju –vm-baiti N.
- Tā vietā, lai atbrīvotu un pārdalītu atmiņas resursus, jūs varat atjaunot atmiņu, izmantojot opciju –vm-keep.
- Pirms atmiņas atbrīvošanas iestatiet miega režīmu N sekundes, izmantojot opciju –vm-hang N.
- Lai radītu N darbiniekus, kuri griežas rakstīšanas()/atsaistīšanas() funkcijās, izmantojiet opciju –hdd N.
- Varat iestatīt taimautu pēc N sekundēm, izmantojot opciju –outout N.
- Iestatiet gaidīšanas koeficientu N mikrosekundes pirms jebkura darba sākuma, izmantojot –backoff N opciju šādi.
- Lai parādītu detalizētāku informāciju stresa laikā, izmantojiet opciju -v.
- 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]