Twitter RSS

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.

Popularity: 7% [?]

Comentarii pentru “Stress test”

  • Șopârloiul spune:

    Pentru testarea performanței discurilor foloseam Bonnie++ însă utilitarul prezentat de tine văd că e “multilateral dezvoltat” :)

  • Sergiu Tot spune:

    Da, e dragut stress. La partea de testarea a HDD-urilor lasa putin de dorit. Mi-ar fi placut sa aiba teste pentru citire, pentru scriere, statistici etc, dar exceptand asta e bun si testul cu stress se aseamana cu incarcarea din viata reala.

Ai intrebari?

* Te rog sa postezi pe NetHelp orice intrebare care nu are legatura cu articolul.

Retele sociale
Reclamã
Sharing makes you cool!
Categorii
Apache
Articole si tutoriale legate de serverul web Apache.
/articole-tutoriale-apache/

cPanel
Articole si tutoriale legate de utilizarea si administrarea sistemului de gestiune a serverelor de hosting, cPanel.
/articole-tutoriale-cpanel-whm/

DNS
Vezi toate articolele din categoria DNS
/dns-bind-domain-name-services/

Linux
Articole si tutoriale legate de Linux, sisteme BSD sau alte sisteme de operare din familia UNIX.
/articole-tutoriale-linux/

Mail
Vezi toate articolele din categoria Mail
/mail/

MySQL
Articole si tutoriale despre serverul de baze de date MySQL.
/articole-tutoriale-optimizare-mysql/

Perl
Vezi toate articolele din categoria Perl
/perl-practical-extraction-and-report-language/

PHP
Vezi toate articolele din categoria PHP
/php-language-hypertext-preprocessor/

Retele
Tutoriale despre retele de calculatoare, configurarea interfetelor de retea si rutarea IP-urilor.
/retele-networking/

Virtualizare
Articole si tutoriale despre virtualizare si sistemel virtuale create cu Xen sau OpenVZ.
/virtualizare-xen-openvz/

Web hosting
Articole despre serviciile de gazduire web, dedicate sau in regim shared.
/web-hosting/

Webmin / Virtualmin
Articole si tutoriale legate de sistemul de gestiune gratuit Webmin sau modulul Virtualmin.
/webmin-virtualmin/





Newsletter
LAMP Recomandã
NetHelp
SRV.ro
cpadmin.ro
ABCDomenii