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:
- doladit aktivity v systému.
- monitorovat rozhraní jádra operačního systému.
- 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.
- 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:
- výpočet CPU
- řídit stres
- I/O synchronizace
- I/O potrubí
- mlácení mezipaměti
- Stres VM
- namáhání zásuvky
- vytvoření a ukončení procesu
- 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.
- Chcete-li vytvořit N pracovníků točících se pomocí funkce sqrt(), použijte volbu –cpu N následovně.
- Chcete-li vytvořit N pracovníků točících se pomocí funkce sync(), použijte možnost –io N následovně.
- Chcete-li vytvořit N pracovníků točících se pomocí funkcí malloc()/free(), použijte možnost –vm N.
- Chcete-li přidělit paměť na pracovníka virtuálního počítače, použijte možnost –vm-bytes N.
- Místo uvolnění a přerozdělení paměťových prostředků můžete paměť znovu zašpinit pomocí možnosti –vm-keep.
- Před uvolněním paměti nastavte režim spánku na N sekund pomocí možnosti –vm-hang N.
- Chcete-li vytvořit N pracovníků rotujících pomocí funkcí write()/unlink(), použijte možnost –hdd N.
- Časový limit po N sekundách můžete nastavit pomocí možnosti –timeout N.
- Nastavte faktor čekání N mikrosekund před zahájením jakékoli práce pomocí možnosti –backoff N následovně.
- Chcete-li při stresu zobrazit podrobnější informace, použijte možnost -v.
- 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]