Com imposar una càrrega elevada de la CPU i una prova d'estrès a Linux mitjançant l'eina Stress-ng
Com a administrador del sistema, és possible que vulgueu examinar i supervisar l'estat dels vostres sistemes Linux quan estan sota estrès de càrrega elevada. Aquesta pot ser una bona manera per als administradors de sistemes i programadors de:
- ajustar les activitats d'un sistema.
- controlar les interfícies del nucli del sistema operatiu.
- Proveu els vostres components de maquinari Linux com ara CPU, memòria, dispositius de disc i molts altres per observar-ne el rendiment sota estrès.
- mesura diferents càrregues que consumeixen energia en un sistema.
En aquesta guia, veurem dues eines importants, stress i stress-ng per a proves d'estrès als vostres sistemes Linux.
1. estrès: és una eina generadora de càrrega de treball dissenyada per sotmetre el vostre sistema a una mesura configurable de la CPU, la memòria, l'E/S i l'estrès del disc.
2. stress-ng: és una versió actualitzada de l'eina generadora de càrrega de treball d'estrès que prova el vostre sistema per a les funcions següents:
- CPU de càlcul
- condueix l'estrès
- Sincronitzacions d'E/S
- E/S de canonades
- Trecció de la memòria cau
- Estrès VM
- estressament del sòcol
- creació i finalització del procés
- propietats de canvi de context
Tot i que aquestes eines són bones per examinar el vostre sistema, no només les hauria de fer servir qualsevol usuari del sistema.
Important: és molt recomanable que utilitzeu aquestes eines amb privilegis d'usuari root, perquè poden estresar la vostra màquina Linux tan ràpidament i per evitar certs errors del sistema en maquinari mal dissenyat.
Com instal·lar l'eina estrès a Linux
Per instal·lar l'eina d'estrès a Debian i els seus derivats com Ubuntu i Mint, executeu l'ordre següent.
$ sudo apt-get install stress
Per instal·lar l'estrès en un RHEL/CentOS i Fedora Linux, heu d'activar el repositori EPEL i, a continuació, escriviu la següent comanda yum per instal·lar-lo:
# yum install stress
La sintaxi general per utilitzar l'accent és:
$ sudo stress option argument
Algunes opcions que podeu utilitzar amb estrès.
- Per generar N treballadors que giren a la funció sqrt(), utilitzeu l'opció –cpu N de la manera següent.
- Per generar N treballadors que giren a la funció sync(), utilitzeu l'opció –io N de la manera següent.
- Per generar N treballadors que giren a les funcions malloc()/free(), utilitzeu l'opció –vm N.
- Per assignar memòria per treballador de vm, utilitzeu l'opció –vm-bytes N.
- En lloc d'alliberar i reassignar recursos de memòria, podeu tornar a embrutar la memòria utilitzant l'opció –vm-keep.
- Configura la repòs a N segons abans d'alliberar memòria mitjançant l'opció –vm-hang N.
- Per generar N treballadors que giren a les funcions write()/unlink(), utilitzeu l'opció –hdd N.
- Podeu establir un temps d'espera després de N segons utilitzant l'opció –timeout N.
- Definiu un factor d'espera de N microsegons abans que comenci qualsevol treball utilitzant l'opció –backoff N de la manera següent.
- Per mostrar informació més detallada quan feu estrès, feu servir l'opció -v.
- Utilitzeu –help per veure l'ajuda per utilitzar l'estrès o veure la pàgina de manual.
1. Per examinar l'efecte de l'ordre cada vegada que l'executeu, primer executeu l'ordre uptime i anoteu la mitjana de càrrega.
A continuació, executeu l'ordre d'estrès per generar 8 treballadors que giren a sqrt() amb un temps d'espera de 20 segons. Després d'executar l'estrès, torneu a executar l'ordre d'activitat i compareu la mitjana de càrrega.
[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. Per generar 8 treballadors que giren a sqrt() amb un temps d'espera de 30 segons, mostrant informació detallada sobre l'operació, executeu aquesta ordre:
[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. Per crear un treballador de les funcions malloc() i free() amb un temps d'espera de 60 segons, executeu l'ordre següent.
[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. Per crear 4 treballadors que giren a sqrt(), 2 treballadors que fan sincronització(), 2 treballadors a malloc()/free(), amb un temps fora de 20 segons i assignar una memòria de 256 MB per treballador de vm, executeu-ho comanda a continuació.
[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]