W końcu postanowiłem (znalazłem chwile czasu ;-)) rozpakować 2 sztuki Raspberry Pi 3, które leżą od kilku(nastu) dni na moim biurku (niebawem będzie na ten temat coś więcej), więc jako użytkownik poprzednich wersji Maliny – zacząłem od własnych testów, by sprawdzić jak w praktyce wygląda wzrost wydajności, głównie ze względu na nowy procesor.

Wprawdzie pierwszym testem było uruchomienie przeglądarki internetowej i arkusza kalkulacyjnego, to z racji tego, że odczucia/wrażenia są kiepskim elementem/wyznacznikiem do przedstawienia na wykresach, sięgnąłem po jeden z programów, z którego czasem korzystam – głównie do szybkiej analizy porównawczej VPSów…

SysBench – multi-threaded system evaluation benchmark

Tym programem jest SysBench, prosta – w obsłudze – aplikacja, za pomocą której szybko przetestujemy podstawowe parametry komputera/serwera:

  • Procesor (CPU)
  • Pamięć RAM
  • System plików (transfer I/O)
  • Bazę danych (OLTP)

Program wystarczy zainstalować – zero konfiguracji. W systemie Debian (Ubuntu, Raspbian) zrobicie to za pomocą polecenia:

sudo apt-get install sysbench

Po tej operacji (instalacji) można przystąpić do testów – wszystko definiujemy w parametrach z jakimi uruchomimy test, wg wzorca:

sysbench [common-options] --test=name [test-options] command

W standardzie do wyboru mamy do naszej dyspozycji kilka testów:

  • fileio – File I/O test
  • cpu – CPU performance test
  • memory – Memory functions speed test
  • threads – Threads subsystem performance test
  • mutex – Mutex performance test
  • oltp – OLTP test

Więcej informacji w podręczniku obsługi:

man sysbench

Lub w podręcznej pomocy, np. dla testu wydajności procesora (CPU) będzie to:

sysbench --test=cpu help

Na koniec jeszcze kilka przykładowych testów (poleceń) – wykonanych na Raspberry Pi 1 model B:

Procesor (operacje na liczbach całkowitych)

Na początek test wydajności procesora, który polega na sprawdzeniu, czy liczby z podanego zakresu (cpu-max-prime) są liczbami pierwszymi:

sysbench --test=cpu --cpu-max-prime=2500 --num-threads=1 run

I przykładowy wynik:

Maximum prime number checked in CPU test: 2500

Test execution summary:
    total time:                          65.1973s
    total number of events:              10000
    total time taken by event execution: 65.1564
    per-request statistics:
         min:                                  6.37ms
         avg:                                  6.52ms
         max:                                 14.65ms
         approx.  95 percentile:               6.90ms

Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   65.1564/0.00

To samo, ale dla 4 rdzeni (4 wątki na raz):

sysbench --test=cpu --cpu-max-prime=2500 --num-threads=4 run

Podobny test, choć z większa koncentracją na wątkach (podsystem):

sysbench --test=threads --num-threads=1 --max-time=30s run

I ponownie – przykładowy wynik testu:

Doing thread subsystem performance test
Thread yields per test: 1000 Locks used: 8
Threads started!
Done.

Test execution summary:
    total time:                          26.1756s
    total number of events:              10000
    total time taken by event execution: 26.1316
    per-request statistics:
         min:                                  2.43ms
         avg:                                  2.61ms
         max:                                 11.97ms
         approx.  95 percentile:               2.71ms

Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   26.1316/0.00

Pamięć RAM

W podobny sposób przestukajmy wydajność pamięci RAM:

sysbench --test=memory --memory-block-size=5M --memory-total-size=50G run

Co w przypadku testowego komputera (Raspberry Pi Model B) wygląda tak:

Operations performed: 410 (   66.03 ops/sec)

2050.00 MB transferred (330.13 MB/sec)

Test execution summary:
    total time:                          6.2097s
    total number of events:              410
    total time taken by event execution: 6.2027
    per-request statistics:
         min:                                 14.87ms
         avg:                                 15.13ms
         max:                                 18.41ms
         approx.  95 percentile:              15.66ms

Threads fairness:
    events (avg/stddev):           410.0000/0.00
    execution time (avg/stddev):   6.2027/0.00

Dysk (wydajność I/O)

Na koniec przykładów test wydajności na systemie plików – w naszym przypadku karta pamięci.

Zaczynamy od przygotowania plików do testów:

sysbench --test=fileio --file-total-size=2G prepare

Powyższe polecenie utworzy nam w katalogu w którym się znajdujemy 128 plików, które łącznie będą zajmowały 2 GB (test_file.0 – test_file.128), a które posłużą nam do przeprowadzenia testu:

sysbench --test=fileio --file-total-size=2G --file-test-mode=rndrw --max-time=30 --max-requests=1000 run

W wyniku działania tego polecenia/testu otrzymacie wynik tego typu:

Operations performed:  600 Read, 400 Write, 1280 Other = 2280 Total
Read 9.375Mb  Written 6.25Mb  Total transferred 15.625Mb  (762.24Kb/sec)
   47.64 Requests/sec executed

Test execution summary:
    total time:                          20.9908s
    total number of events:              1000
    total time taken by event execution: 0.1211
    per-request statistics:
         min:                                  0.07ms
         avg:                                  0.12ms
         max:                                  0.80ms
         approx.  95 percentile:               0.18ms

Threads fairness:
    events (avg/stddev):           1000.0000/0.00
    execution time (avg/stddev):   0.1211/0.00

Na koniec tego testu warto jeszcze posprzątać utworzone na potrzeby testu pliki:

sysbench --test=fileio cleanup

To nie wszystko

Oczywiście to nie wszystkie testy (i warianty), ale nie to było moim celem – chciałem Wam tylko zasygnalizować istnienie tego programu.

Zastanawiałem się jeszcze nad dodaniem do przykładów testu MySQL (baza danych), ale system wykorzystywany do testów na Raspberry Pi (Raspbian) jest właściwie “prosto z pudełka” (ISO), tzn. bez żadnych modyfikacji, czy dodatkowych programów – oczywiście poza programami zainstalowanymi na potrzeby testów, i aktualizacjami.

Dlatego na razie tylko sygnalizuje, że jest również możliwość wykonania takiego testu, a może za jakiś czas uzupełnię wpis o ten test…

(!) Zgłoś błąd na stronie | Lub postaw nam kawę :-)
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk