Meniu

Stress test cu stress pentru CPU, RAM si HDD.

Cand vine vorba de sisteme de calcul puse in productie e important sa ne asiguram ca sunt testate minutios toate cele trei caracteristici principale: CPU, RAM si HDD. Pentru asta putem folosi o aplicatie de testare numita stress. Aplicatia se poate descarca de pe pagina oficiala sau, in FreeBSD, poate fi instalata din porturi (/usr/ports/sysutils/stress).

Hai sa vedem cateva exemple pentru fiecare caracteristica testata:

CPU Stress

%stress --cpu 4 --timeout 5s --verbose
stress: info: [42155] dispatching hogs: 4 cpu, 0 io, 0 vm, 0 hdd
stress: dbug: [42155] using backoff sleep of 12000us
stress: dbug: [42155] setting timeout to 5s
stress: dbug: [42155] --> hogcpu worker 4 [42156] forked
stress: dbug: [42155] using backoff sleep of 9000us
stress: dbug: [42155] setting timeout to 5s
stress: dbug: [42155] --> hogcpu worker 3 [42157] forked
stress: dbug: [42155] using backoff sleep of 6000us
stress: dbug: [42155] setting timeout to 5s
stress: dbug: [42155] --> hogcpu worker 2 [42158] forked
stress: dbug: [42155] using backoff sleep of 3000us
stress: dbug: [42155] setting timeout to 5s
stress: dbug: [42155] --> hogcpu worker 1 [42159] forked
stress: dbug: [42155] < -- worker 42159 signalled normally
stress: dbug: [42155] <-- worker 42158 signalled normally
stress: dbug: [42155] <-- worker 42157 signalled normally
stress: dbug: [42155] <-- worker 42156 signalled normally
stress: info: [42155] successful run completed in 5s
%

Pentru testarea procesorului, stress foloseste functia sqrt(). Folosind parametrul –cpu 4 ii spunem aplicatiei sa porneasca 4 instante in paralel. Pentru un test eficient e bine ca numarul de instante sa fie mai mare sau cel putin egal cu numarul de procesoare instalate in sistem.

Parametrul –timeout 5s ii spune aplicatiei sa ruleze timp de 5 secunde iar –verbose ne afiseaza detaliile testarii – liniile care contin [dbug]. Acesti parametri ii vom folosi si pentru testarea HDD-ului si a memoriei RAM.

RAM Stress

%stress --vm 1 --vm-bytes 128M --timeout 3s --verbose
stress: info: [42628] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: dbug: [42628] using backoff sleep of 3000us
stress: dbug: [42628] setting timeout to 3s
stress: dbug: [42628] --> hogvm worker 1 [42629] forked
stress: dbug: [42629] allocating 134217728 bytes ...
stress: dbug: [42629] touching bytes in strides of 4096 bytes ...
stress: dbug: [42629] freed 134217728 bytes
stress: dbug: [42629] allocating 134217728 bytes ...
stress: dbug: [42629] touching bytes in strides of 4096 bytes ...
.................................................................
stress: dbug: [42628] < -- worker 42629 signalled normally
stress: info: [42628] successful run completed in 3s
%

Pentru testarea memoriei se foloseste functia malloc(). Parametrul --vm 1 ii spune aplicatiei cate instante vor fi rulate in paralel. Parametrul --vm-bytes 128M specifica marimea zonei de memorie alocate pe fiecare instanta. Optional putem adauga si parametrul --vm-hang 2 care ii spune aplicatiei cate secunde sa astepte inainte de a aloca memoria - parametru foarte util daca dorim sa testam sistemul in conditii cu foarte putina memorie disponibila.

HDD Stress

Daca pana aici stress s-a dovedit o aplicatie utila, e momentul sa dezamageasca putin. Testarea discurilor este de fapt o testare superficiala a discului pe care e instalat sistemul de operare. O metoda prin care sa alegem discul care ne intereseaza sa-l testam nu a fost implementata inca. Deci testarea HDD-ului va fi de fapt testarea operatiilor I/O iar rezultatul va fi relevant doar din punct de vedere al comunicarii cu HDD-ul, nu si din punct de vedere al calitatii acestuia.

%stress --hdd 1 --hdd-bytes 1 --timeout 3s --verbose
stress: info: [42699] dispatching hogs: 0 cpu, 0 io, 0 vm, 1 hdd
stress: dbug: [42699] using backoff sleep of 3000us
stress: dbug: [42699] setting timeout to 3s
stress: dbug: [42699] --> hoghdd worker 1 [42700] forked
stress: dbug: [42700] seeding 1048575 byte buffer with random data
stress: dbug: [42700] opened ./stress.8fHbLc for writing 1 bytes
stress: dbug: [42700] unlinking ./stress.8fHbLc
stress: dbug: [42700] fast writing to ./stress.8fHbLc
stress: dbug: [42700] slow writing to ./stress.8fHbLc
stress: dbug: [42700] closing ./stress.8fHbLc after 1 bytes
............................................................
stress: dbug: [42700] opened ./stress.yQEHnM for writing 1 bytes
stress: dbug: [42700] unlinking ./stress.yQEHnM
stress: dbug: [42700] fast writing to ./stress.yQEHnM
stress: dbug: [42700] slow writing to ./stress.yQEHnM
stress: dbug: [42700] closing ./stress.yQEHnM after 1 bytes
stress: dbug: [42699] < -- worker 42700 signalled normally
stress: info: [42699] successful run completed in 3s
%

Pentru testarea HDD-ului se foloseste functia write(). Testarea presupune crearea de fisiere in directorul curent si rularea unor teste pe aceste fisiere - singurul mod de a testa un HDD anume fiind, de fapt, pornirea testarii dintr-un director de pe HDD-ul in cauza.

Parametrul --hdd 1 ii spune aplicatiei cate instante vor fi rulate in paralel. Cu --hdd-bytes 1 putem seta numarul de bytes care vor fi scrisi in fisierele pentru testare.

Cele trei teste le-am prezentat separat pentru a izola testele intre ele. Daca ne intereseaza un test cu adevarat relevan, putem combina cele trei teste intr-unul singur pentru ca sistemul sa fie intr-adevar forjat iar rezultatele finale sa fie relevante. Un exemplu de test relevant pentru un sistem cu patru core-uri Xeon si 8GB RAM ar fi urmatorul:

%stress --cpu 8 --io 4 --hdd 4 --hdd-bytes 2048 --vm 20 --vm-bytes 512M --vm-hang 1 --timeout 5m
stress: info: [42996] dispatching hogs: 8 cpu, 4 io, 20 vm, 4 hdd
stress: info: [42996] successful run completed in 301s
%

Un astfel de test consuma foarte repede toate resursele sistemului (inclusiv swap) si ii creste incarcarea la cel putin 25 de puncte apropiindu-se astfel de situatiile critice intalnite in viata reala.

Andreea

"Rome wasn't built in a day" !
  • | 120 articole

Nici un comentariu inca. Fii primul!
  • powered by Verysign