Тестируем производительность системы утилитой 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
Получаем примерно такой результат
- Running the test with following options:
- Number of threads: 1
- Doing CPU performance benchmark
- Threads started!
- Done.
- Maximum prime number checked in CPU test: 20000
- Test execution summary:
- total time: 25.8502s
- total number of events: 10000
- total time taken by event execution: 25.8437
- per-request statistics:
- min: 2.28ms
- avg: 2.58ms
- max: 14.98ms
- approx. 95 percentile: 2.79ms
- Threads fairness:
- events (avg/stddev): 10000.0000/0.00
- execution time (avg/stddev): 25.8437/0.00
memory — Этот тест служит для измерения производительности последовательных операций чтения/записи в оперативную память.
- sysbench --test=memory run
- sysbench 0.4.12: multi-threaded system evaluation benchmark
- Running the test with following options:
- Number of threads: 1
- Doing memory operations speed test
- Memory block size: 1K
- Memory transfer size: 102400M
- Memory operations type: write
- Memory scope type: global
- Threads started!
- Done.
- Operations performed: 104857600 (3094609.69 ops/sec)
- 102400.00 MB transferred (3022.08 MB/sec)
- Test execution summary:
- total time: 33.8839s
- total number of events: 104857600
- total time taken by event execution: 27.4886
- per-request statistics:
- min: 0.00ms
- avg: 0.00ms
- max: 2.13ms
- approx. 95 percentile: 0.00ms
- Threads fairness:
- events (avg/stddev): 104857600.0000/0.00
- execution time (avg/stddev): 27.4886/0.00
fileio — Этот тест используется для симуляции разнообразной нагрузки на файловую подсистему. При подготовке теста создается определенное количество файлов (указанного размера). Затем, при выполнении теста, над этими файлами происходят операции чтения/записи в несколько потоков.
- sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw prepare
- sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw run
- sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw cleanup
- sysbench 0.4.12: multi-threaded system evaluation benchmark
- Running the test with following options:
- Number of threads: 16
- Extra file open flags: 0
- 128 files, 24Mb each
- 3Gb total file size
- Block size 16Kb
- Number of random requests for random IO: 10000
- Read/Write ratio for combined random IO test: 1.50
- Periodic FSYNC enabled, calling fsync() each 100 requests.
- Calling fsync() at the end of test, Enabled.
- Using synchronous I/O mode
- Doing random r/w test
- Threads started!
- Done.
- Operations performed: 6001 Read, 4001 Write, 12803 Other = 22805 Total
- Read 93.766Mb Written 62.516Mb Total transferred 156.28Mb (62.798Mb/sec)
- 4019.05 Requests/sec executed
- Test execution summary:
- total time: 2.4886s
- total number of events: 10002
- total time taken by event execution: 4.6861
- per-request statistics:
- min: 0.00ms
- avg: 0.47ms
- max: 923.16ms
- approx. 95 percentile: 0.01ms
- Threads fairness:
- events (avg/stddev): 625.1250/173.55
- execution time (avg/stddev): 0.2929/0.42
threads — Служит для проверки работы в условиях большого количества конкурирующих потоков. Тест заключается в создании нескольких потоков и нескольких мутексов. Далее каждый поток начинает генерировать запросы, которые блокируют мутекс, исполняют процессорные задачи (для симуляции реальной работы) и разблокируют мутекс.
- sysbench --num-threads=64 --test=threads --thread-yields=1000 --thread-locks=8 run
- sysbench 0.4.12: multi-threaded system evaluation benchmark
- Running the test with following options:
- Number of threads: 64
- Doing thread subsystem performance test
- Thread yields per test: 1000 Locks used: 8
- Threads started!
- Done.
- Test execution summary:
- total time: 3.2003s
- total number of events: 10000
- total time taken by event execution: 202.8096
- per-request statistics:
- min: 0.28ms
- avg: 20.28ms
- max: 148.67ms
- approx. 95 percentile: 61.25ms
- Threads fairness:
- events (avg/stddev): 156.2500/13.71
- execution time (avg/stddev): 3.1689/0.01
OLTP — тестирует производительность MySQL и был подробно описан ранее в статье Тестируем производительность MySQL