Vyhledávání na webu

Jak zavést vysoké zatížení procesoru a zátěžový test na Linuxu pomocí nástroje „Stress-ng“


Jako správce systému možná budete chtít prozkoumat a sledovat stav svých systémů Linux, když jsou vystaveny vysokému zatížení. Pro systémové administrátory a programátory to může být dobrý způsob, jak:

  1. doladit aktivity v systému.
  2. monitorovat rozhraní jádra operačního systému.
  3. otestujte své hardwarové komponenty Linuxu, jako je CPU, paměť, disková zařízení a mnoho dalších, abyste mohli sledovat jejich výkon při zátěži.
  4. měřit různé zátěže spotřebovávající energii v systému.

V této příručce se podíváme na dva důležité nástroje, stress a stress-ng pro zátěžové testování ve vašich systémech Linux.

1. stress – je nástroj pro generátor pracovní zátěže navržený tak, aby vystavil váš systém konfigurovatelnému měření zátěže CPU, paměti, I/O a disku.

2. stress-ng – je aktualizovaná verze nástroje pro generátor zátěže, který testuje váš systém na následující funkce:

  1. výpočet CPU
  2. řídit stres
  3. I/O synchronizace
  4. I/O potrubí
  5. mlácení mezipaměti
  6. Stres VM
  7. namáhání zásuvky
  8. vytvoření a ukončení procesu
  9. vlastnosti přepínání kontextu

Ačkoli jsou tyto nástroje dobré pro zkoumání vašeho systému, neměl by je používat pouze jakýkoli uživatel systému.

Důležité: Důrazně se doporučuje používat tyto nástroje s oprávněními uživatele root, protože mohou velmi rychle zatěžovat váš počítač se systémem Linux a vyhnout se určitým systémovým chybám na špatně navrženém hardwaru. .

Jak nainstalovat nástroj „stres“ v Linuxu

Chcete-li nainstalovat nástroj pro stres na Debian a jeho deriváty, jako je Ubuntu a Mint, spusťte následující příkaz.

sudo apt-get install stress

Chcete-li nainstalovat stress na RHEL/CentOS a Fedora Linux, musíte zapnout úložiště EPEL a poté zadat následující příkaz yum pro instalaci stejný:

yum install stress

Obecná syntaxe pro použití stresu je:

sudo stress option argument

Některé možnosti, které můžete použít se stresem.

  1. Chcete-li vytvořit N pracovníků točících se pomocí funkce sqrt(), použijte volbu –cpu N následovně.
  2. Chcete-li vytvořit N pracovníků točících se pomocí funkce sync(), použijte možnost –io N následovně.
  3. Chcete-li vytvořit N pracovníků točících se pomocí funkcí malloc()/free(), použijte možnost –vm N.
  4. Chcete-li přidělit paměť na pracovníka virtuálního počítače, použijte možnost –vm-bytes N.
  5. Místo uvolnění a přerozdělení paměťových prostředků můžete paměť znovu zašpinit pomocí možnosti –vm-keep.
  6. Před uvolněním paměti nastavte režim spánku na N sekund pomocí možnosti –vm-hang N.
  7. Chcete-li vytvořit N pracovníků rotujících pomocí funkcí write()/unlink(), použijte možnost –hdd N.
  8. Časový limit po N sekundách můžete nastavit pomocí možnosti –timeout N.
  9. Nastavte faktor čekání N mikrosekund před zahájením jakékoli práce pomocí možnosti –backoff N následovně.
  10. Chcete-li při stresu zobrazit podrobnější informace, použijte možnost -v.
  11. Pomocí –help zobrazíte nápovědu k používání stresu nebo zobrazíte manuálovou stránku.

Jak mohu využít stres na systémech Linux?

1. Chcete-li zkontrolovat účinek příkazu při každém jeho spuštění, nejprve spusťte příkaz uptime a poznamenejte si průměrnou zátěž.

Dále spusťte příkaz stress, aby se vytvořilo 8 pracovníků rotujících na sqrt() s časovým limitem 20 sekund. Po spuštění stresu znovu spusťte příkaz uptime a porovnejte průměrnou zátěž.


tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu  8 --timeout 20
tecmint@tecmint ~ $ uptime
Ukázkový výstup
tecmint@tecmint ~ $ uptime    
 17:20:00 up  7:51,  2 users,  load average: 1.91, 2.16, 1.93     [<-- Watch Load Average]
tecmint@tecmint ~ $ 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
tecmint@tecmint ~ $ uptime
 17:20:24 up  7:51,  2 users,  load average: 5.14, 2.88, 2.17     [<-- Watch Load Average]

2. Chcete-li vytvořit 8 pracovníků točících se na sqrt() s časovým limitem 30 sekund a zobrazující podrobné informace o operaci, spusťte tento příkaz:

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 8 -v --timeout 30s
tecmint@tecmint ~ $ uptime
Ukázkový výstup
tecmint@tecmint ~ $ uptime
 17:27:25 up  7:58,  2 users,  load average: 1.40, 1.90, 1.98     [<-- Watch Load Average]
tecmint@tecmint ~ $ 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] tecmint@tecmint ~ $ uptime
 17:27:59 up  7:59,  2 users,  load average: 5.41, 2.82, 2.28     [<-- Watch Load Average]

3. Chcete-li spustit jednoho pracovníka funkcí malloc() a free() s časovým limitem 60 sekund, spusťte následující příkaz.

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --vm 1 --timeout 60s 
tecmint@tecmint ~ $ uptime
Ukázkový výstup
tecmint@tecmint ~ $ uptime
 17:34:07 up  8:05,  2 users,  load average: 1.54, 2.04, 2.11     [<-- Watch Load Average]
tecmint@tecmint ~ $ 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
tecmint@tecmint ~ $ uptime
 17:35:20 up  8:06,  2 users,  load average: 2.45, 2.24, 2.17     [<-- Watch Load Average]

4. Chcete-li spustit 4 pracovníky otáčející se na sqrt(), 2 pracovníky otáčející se na synchronizaci(), 2 pracovníky na malloc()/free(), s časovým limitem 20 sekund a přidělit paměť 256 MB na pracovníka vm, spusťte tento příkaz níže.

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s 
tecmint@tecmint ~ $ uptime
Ukázkový výstup
tecmint@tecmint ~ $ uptime
 17:40:33 up  8:12,  2 users,  load average: 1.68, 1.84, 2.02     [<-- Watch Load Average]
tecmint@tecmint ~ $ 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
tecmint@tecmint ~ $ uptime
 17:40:58 up  8:12,  2 users,  load average: 4.63, 2.54, 2.24     [<-- Watch Load Average]