Тестируем производительность системы утилитой sysbench

Синтаксис

sysbench [general-options] --test=имя-теста [опции] команда

Команды, которые можно использовать в тестах: 

  • prepare — подготовка теста (создание таблиц, вставка данных и т.п.) если актуально
  • run — выполнение теста
  • cleanup — очистка данных (после этапа подготовки)
  • help — выводит дополнительные параметры теста

[general-options] — основные опции:

  • --num-threads=N — число потоков [1]
  • --max-requests=N — ограничивает общее кол-во запросов [10000]

Параметр "--test" задает имя теста, который следует выполнять. Sysbench включает в себя несколько тестов

cpu — Этот тест проверит производительность процессоров, используя вычисления с 64-разрядными числами. Например:

sysbench --test=cpu --cpu-max-prime=20000 run

Получаем примерно такой результат

  1. Running the test with following options:
  2. Number of threads: 1
  3.  
  4. Doing CPU performance benchmark
  5.  
  6. Threads started!
  7. Done.
  8.  
  9. Maximum prime number checked in CPU test: 20000
  10.  
  11.  
  12. Test execution summary:
  13.     total time:                          25.8502s
  14.     total number of events:              10000
  15.     total time taken by event execution: 25.8437
  16.     per-request statistics:
  17.          min:                                  2.28ms
  18.          avg:                                  2.58ms
  19.          max:                                 14.98ms
  20.          approx.  95 percentile:               2.79ms
  21.  
  22. Threads fairness:
  23.     events (avg/stddev):           10000.0000/0.00
  24.     execution time (avg/stddev):   25.8437/0.00

memory — Этот тест служит для измерения производительности последовательных операций чтения/записи в оперативную память.

  1. sysbench --test=memory run
  2.  
  3. sysbench 0.4.12:  multi-threaded system evaluation benchmark
  4.  
  5. Running the test with following options:
  6. Number of threads: 1
  7.  
  8. Doing memory operations speed test
  9. Memory block size: 1K
  10.  
  11. Memory transfer size: 102400M
  12.  
  13. Memory operations type: write
  14. Memory scope type: global
  15. Threads started!
  16. Done.
  17.  
  18. Operations performed: 104857600 (3094609.69 ops/sec)
  19.  
  20. 102400.00 MB transferred (3022.08 MB/sec)
  21.  
  22.  
  23. Test execution summary:
  24.     total time:                          33.8839s
  25.     total number of events:              104857600
  26.     total time taken by event execution: 27.4886
  27.     per-request statistics:
  28.          min:                                  0.00ms
  29.          avg:                                  0.00ms
  30.          max:                                  2.13ms
  31.          approx.  95 percentile:               0.00ms
  32.  
  33. Threads fairness:
  34.     events (avg/stddev):           104857600.0000/0.00
  35.     execution time (avg/stddev):   27.4886/0.00

fileio — Этот тест используется для симуляции разнообразной нагрузки на файловую подсистему. При подготовке теста создается определенное количество файлов (указанного размера). Затем, при выполнении теста, над этими файлами происходят операции чтения/записи в несколько потоков.

  1. sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw prepare
  2. sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw run
  3. sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw cleanup
  4.  
  5. sysbench 0.4.12:  multi-threaded system evaluation benchmark
  6.  
  7. Running the test with following options:
  8. Number of threads: 16
  9.  
  10. Extra file open flags: 0
  11. 128 files, 24Mb each
  12. 3Gb total file size
  13. Block size 16Kb
  14. Number of random requests for random IO: 10000
  15. Read/Write ratio for combined random IO test: 1.50
  16. Periodic FSYNC enabled, calling fsync() each 100 requests.
  17. Calling fsync() at the end of test, Enabled.
  18. Using synchronous I/O mode
  19. Doing random r/w test
  20. Threads started!
  21. Done.
  22.  
  23. Operations performed:  6001 Read, 4001 Write, 12803 Other = 22805 Total
  24. Read 93.766Mb  Written 62.516Mb  Total transferred 156.28Mb  (62.798Mb/sec)
  25.  4019.05 Requests/sec executed
  26.  
  27. Test execution summary:
  28.     total time:                          2.4886s
  29.     total number of events:              10002
  30.     total time taken by event execution: 4.6861
  31.     per-request statistics:
  32.          min:                                  0.00ms
  33.          avg:                                  0.47ms
  34.          max:                                923.16ms
  35.          approx.  95 percentile:               0.01ms
  36.  
  37. Threads fairness:
  38.     events (avg/stddev):           625.1250/173.55
  39.     execution time (avg/stddev):   0.2929/0.42

threads — Служит для проверки работы в условиях большого количества конкурирующих потоков. Тест заключается в создании нескольких потоков и нескольких мутексов. Далее каждый поток начинает генерировать запросы, которые блокируют мутекс, исполняют процессорные задачи (для симуляции реальной работы) и разблокируют мутекс.

  1. sysbench --num-threads=64 --test=threads --thread-yields=1000 --thread-locks=8 run
  2.  
  3. sysbench 0.4.12:  multi-threaded system evaluation benchmark
  4.  
  5. Running the test with following options:
  6. Number of threads: 64
  7.  
  8. Doing thread subsystem performance test
  9. Thread yields per test: 1000 Locks used: 8
  10. Threads started!
  11. Done.
  12.  
  13.  
  14. Test execution summary:
  15.     total time:                          3.2003s
  16.     total number of events:              10000
  17.     total time taken by event execution: 202.8096
  18.     per-request statistics:
  19.          min:                                  0.28ms
  20.          avg:                                 20.28ms
  21.          max:                                148.67ms
  22.          approx.  95 percentile:              61.25ms
  23.  
  24. Threads fairness:
  25.     events (avg/stddev):           156.2500/13.71
  26.     execution time (avg/stddev):   3.1689/0.01

OLTP — тестирует производительность MySQL и был подробно описан ранее в статье Тестируем производительность MySQL

Теги: