Terminal pogryzł człowieka: stress-ng
Czy może być lepszy sposób na przetestowanie wydajności swojego komputera niż… Przetestowanie jego możliwości? Za tym pozornie maślano-maślanym komunałem kryje się wiedza, jakiego narzędzia najlepiej użyć do tego celu. Większość z was zakrzyknie bez zastanowienia – „użyj stress”. I byłaby to porada słuszna, gdyby nie stress-ng.
Czym się różni stress-ng od popularnego stress? W zasadzie w obydwu przypadkach chodzi o to samo. Nałożyć na procesor tyle pracy i w tak nieoczekiwanej formie, żeby rozgrzać go do czerwoności. Założenie to może i brzmi banalnie, ale wystarczy rzucić okiem na to, czym zamierza stresować procesor stress-ng. To pierwsza poważniejsza różnica. Stress-ng jest o wiele bardziej wysublimowany. Oferuje około 70 algorytmów które są w stanie przebadać zachowanie i wydajność pod kątem przeliczeń zmiennoprzecinkowych, manipulacji bitowych, działań na liczbach rzeczywistych, itp. Kolejne 20 testów przebada sprawność pamięci wirtualnej (VM). W sumie dostajemy do ręki prawie 200 możliwych kombinacji obciążających przeróżne element istotne dla funkcjonowania nie tylko komputera ale i systemu operacyjnego. Jak można wyczytać w dokumentacji możemy skupić się na „CPU compute, Cache thrashing, Drive stress, I/O syncs, VM stress, Socket stressing, Context switching, Process creation and termination„.
Na ile temat jest istotny niech świadczy fakt, że stress-ng przyczynił się do wykrycia wielu błędów w kernelu – w tym także tych zagrażających bezpieczeństwu.
Oczywiście przeciętny użytkownik raczej nie będzie analizował wydajności i zachowania się niektórych funkcji kernela. Chociaż stress-ng nie jest reklamowany jako pełnoprawne narzędzie do benchmarków, to większość z nas wykorzysta go właśnie do tego celu. A możliwości mamy wiele. Np.:
uptime
stress-ng --cpu 4 --timeout 60s --metrics-brief
uptime
… co uruchomi cztery wątki testujące procesor na okoliczność przeróżnych obliczeń.
stress-ng --disk 2 --timeout 60s --metrics-brief
… co uruchomi 2 wątki wykonujące przeróżne czynności na naszym dysku – i tym samym dowiemy się o jego wydajności.
stress-ng --vm 2 --vm-bytes 1G --timeout 60s
… co dokona zaboru określonej ilości pamięci, prób jej alokacji, a dwa wątki będą wykonywały operacje odczytu i zapisu.
To zaledwie przykłady jak można wykorzystać stress-ng. Wspomniane testy można ze sobą łączyć, definiować dodatkowe parametry i uruchamiać je na dłuższy czas. Tym samym możemy zgotować naszemu komputerowi i systemowi prawdziwe piekło.
Jeżeli dopatrywać się sensowności powyższego to wystarczy pamiętać o możliwościach jakie się otwierają przed nami. Sprawdzanie stabilności termicznej, określanie stabilności pamięci, CPU i tak dalej. Za pomocą stress-ng można uniknąć wielu godzin spędzonych na dochodzeniu co i dlaczego nie działa.
A na dodatek program znajduje się po prostu w repozytoriach.