You are here
MariaDB and MySQL Benchmarking
Table of Content
- Database Benchmark
- General Benchmarking Tools
- CPU Benchmarking
- Disk benchmarking
- Network Benchmarking
- Application Stress Testing
Database Benchmark
- sysbench (filesystems and OS/HW tests), Sysbench source, sysbench v0.5, sysbench scripts
- OSDL Database Test Suite (download)
- DBT2 (TPC-C, OLTP), DBT2 Benchmark Tool for MySQL
- DBT3 (TPC-H, complex and long running queries, data warehouse (DWH))
- TM1 (3rd party, ODBC, telecom benchmark)
- TPC Benchmarks
- TPCC-mysql
- db_STRESS
- HammerDB
- db_bench
- Acronis perfkit (benchmark, benchmark-db)
- Web3Bench (TiDB, MySQL written in Java/Python)
- Finch (Finch is a MySQL benchmark tool developed for software engineers and modern infrastructures.)
General Benchmarking Tools
- Apache JMeter: To test performance on static and dynamic resources (files, Servlets, Perl scripts, Java Objects, Data Bases and Queries, FTP Servers and more).
- Gatling: Gatling is a highly capable load testing tool. It is designed for ease of use, maintainability and high performance.
- Tsung: Open-source multi-protocol distributed load testing tool.
- Slamd Java-based Distributed Load Generation Engine application designed for stress testing and performance analysis of network-based applications.
- Grinder A Java load testing framework that makes it easy to run a distributed test using many load injector machines.
- mysqlslap mysqlslap is a diagnostic program designed to emulate client load for a MySQL server and to report the timing of each stage. It works as if multiple clients are accessing the server.
bm
- httperf
- apachebench (ab)
CPU Benchmarking
Disk benchmarking
# bonnie -s 2047 -S 10000 Bonnie 1.4: File './Bonnie.12330', size: 2146435072, volumes: 1 Writing with putc()... done: 20440 kB/s 89.7 %CPU Rewriting... done: 18940 kB/s 18.3 %CPU Writing intelligently... done: 46256 kB/s 28.8 %CPU Reading with getc()... done: 18771 kB/s 82.1 %CPU Reading intelligently... done: 32549 kB/s 17.3 %CPU ---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek- -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --10k (03)- Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU master 1*2047 20440 89.7 46256 28.8 18940 18.3 18771 82.1 32549 17.3 183.6 1.5
with fsync
# bonnie -s 2047 -S 10000 -y Bonnie 1.4: File './Bonnie.12437', size: 2146435072, volumes: 1 Writing with putc()... done: 20189 kB/s 89.1 %CPU Rewriting... done: 17157 kB/s 16.8 %CPU Writing intelligently... done: 40116 kB/s 25.2 %CPU Reading with getc()... done: 19356 kB/s 84.9 %CPU Reading intelligently... done: 34367 kB/s 18.1 %CPU ---Sequential Output (sync)----- --- Sequential Input-- --Rnd Seek- -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --10k (03)- Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU master 1*2047 20189 89.1 40116 25.2 17157 16.8 19356 84.9 34367 18.1 182.2 1.8
with o_direct
# bonnie -s 2047 -S 10000 -o_direct Bonnie 1.4: File './Bonnie.12507', size: 2146435072, volumes: 1 Using O_DIRECT for block based I/O Writing with putc()... done: 19610 kB/s 86.1 %CPU Rewriting... done: 15500 kB/s 4.2 %CPU Writing intelligently... done: 31387 kB/s 13.5 %CPU Reading with getc()... done: 13470 kB/s 61.1 %CPU Reading intelligently... done: 35937 kB/s 4.8 %CPU ---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek- -Per Char- -DIOBlock- -DRewrite- -Per Char- -DIOBlock- --10k (03)- Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU master 1*2047 19610 86.1 31387 13.5 15500 4.2 13470 61.1 35937 4.8 109.0 1.2
Bonnie++:
# bonnie++ -s 4096 -r 1024 Version 1.01d ------Sequential Output------ -- Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP master 4G 35081 66 37958 28 16755 9 30270 47 36248 14 113.5 0 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 13694 97 +++++ +++ 10274 88 13566 95 +++++ +++ 10679 95
Dell (Dual Xeons 5130 @ 2.00GHz, 8Gb RAM and 4 x 15k rpm SCSI disks in RAID 0):
# bonnie++ -d /tmp/ -s 16000 -u root Version 1.03 ------Sequential Output-------- --Sequential Input-- --Random- -Per Chr- --Block--- -Rewrite-- -Per Chr- --Block--- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP server 16000M 58912 98 223914 56 100107 18 54365 79 230161 16 732.5 1 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
1 Gbyte RAM, 7200 rpm laptop disk:
# bonnie++ -s 4096 -u root Version 1.03 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP laptop 4G 20580 60 22596 10 10202 5 21170 63 23001 6 75.3 0 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- --Delete- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 27004 90 +++++ +++ 23060 84 26172 94 +++++ +++ 25648 99
RAID-0: 2 disks, 2 x 2 Intel(R) Xeon(TM) CPU 3.00GHz, Cache size: 2048 kbyte, 4 Gbyte RAM:
# bonnie++ -s 8000 -u root Version 1.03 ------Sequential Output------ --Sequential Input-- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block--- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP mysql14 8000M 45832 92 91442 32 46449 12 33945 61 101364 11 685.0 1 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 21528 69 +++++ +++ +++++ +++ 31245 99 +++++ +++ +++++ +++
2 x 2 Intel(R) Xeon(TM) CPU 2.80GHz, 2 Gbyte RAM
On EMC mounted by NFS (15k rpm SCSI disks):
# bonnie++ -d /var/lib/mysql/test/ -s 8000 -u root Version 1.03 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP ws6.int.euroc 8000M 38366 92 42475 8 5066 87 37715 90 55064 7 267.3 1 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 415 4 426 88 375 3 444 4 1883 6 401 3
Intel(R) Core(TM) i7 CPU 870, 2.93GHz, Cache size: 8192 KB, 4 core (x 2 threads), 16 GB RAM
Disk: WD5002AALX-0, 500GB, 7200 RPM, 32MB Cache, SATA 6.0Gb/s
# bonnie++ -d /tmp -u mysql Version 1.96 ------Sequential Output------ --Sequential Input- --Random- Concurrency 1 -Per Chr- ---Block-- -Rewrite- -Per Chr- --Block--- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP master 32088M 369 98 116667 11 51319 6 3382 75 141798 6 254.0 4 Latency 22466us 846ms 6101ms 120ms 385ms 2023ms Version 1.96 ------Sequential Create------ --------Random Create-------- master -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 22596 28 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ Latency 46649us 394us 425us 426us 21us 37us
Intel(R) Core(TM) i7 CPU 870, 2.93GHz, Cache size: 8192 KB, 4 core (x 2 threads), 16 GB RAM
Disk: KINGSTON SNV425S 64 Gbyte SSD-Drive (NAND Flash ), Sequential Speed: up to 200MB/s read; 110MB/s write, Life expectancy: 1 mio hours MTBF
# bonnie++ -d /data -u mysql Version 1.96 -------Sequential Output------- --Sequential Input- --Random- Concurrency 1 -Per Chr- ---Block--- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP master 32088M 1539 97 152173 9 31653 3 4098 98 291278 15 2466 25 Latency 6576us 1247ms 1681ms 2637us 5306us 1048ms Version 1.96 ------Sequential Create------ --------Random Create-------- master -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 465 2 +++++ +++ 451 2 498 2 +++++ +++ 543 2 Latency 715ms 128us 1048ms 625ms 3us 653ms
Intel(R) Core(TM) i7 CPU M 620, 2.67GHz, Cache size: 4096 KB, 2 core (x 2 threads), 8 GB RAM
Disk: Seagate ST9500420AS, 500 Gbyte, SATA 3Gb/s, Cache: 16MB, 7200 RPM
# sudo bonnie++ -u mysql Version 1.96 ------Sequential Output------ --Sequential Input- --Random- Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP laptop3 15728M 732 92 80287 8 29355 4 1664 39 88391 6 211.1 3 Latency 25187us 1165ms 1784ms 206ms 280ms 868ms Version 1.96 ------Sequential Create------ --------Random Create-------- laptop3 -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 10488 14 +++++ +++ 14688 15 27165 38 +++++ +++ +++++ +++ Latency 799us 947us 44528us 437us 42us 55us
Network Benchmarking
Minimal packet size is 84 byte/packet. This happens with the a payload (frame size) of 46 bytes. Max payload is 1500 byte which results in a packet size of 1538 byte.
Speed | bits/s | byte/s | maximum PPS (f/s) | minimum PPS (f/s) |
---|---|---|---|---|
10 Mbps | 10'000'000 | 1'250'000 | 14'881 | 813 |
100 Mbps | 100'000'000 | 12'500'000 | 148'810 | 8'127 |
1 Gbps | 1'000'000'000 | 125'000'000 | 1'488'095 | 81'274 |
10 Gbps | 10'000'000'000 | 1'250'000'000 | 14'880'952 | 812'744 |
100 Gbps | 100'000'000'000 | 12'500'000'000 | 148'809'524 | 8'127'438 |
Sources::
- How many Packets per Second per port are needed to achieve Wire-Speed?
- Bandwidth, Packets Per Second, and Other Network Performance Metrics
Tools
Application Stress Testing
OwnCloud / NextCloud
Asterisk
- SIPp
- StarTrinity SIP Tester™ (call generator, simulator) - VoIP monitoring and testing tool
- VitalPBX-Asterisk Stress Test
- Asterisk Test Suite: Building Better Tests
- Astertest - asterisk stress testing tool
- Asterisk Testsuite