保护私人版权,尊重他人版权。转载请注明出处并附带页面链接
Sysbench一款开源的多线程性能测试工具,可提供以下几个方面的测试:
- cpu :提供一个简单的cpu测试
- fileIo:文件磁盘io的测试
- memory:内存分配及传输速度
- thread:线程调度测试
- mutex:POSIX的锁测试
- OLTP:数据库性能,主要支持MYSQL, PgSQL, Oracle 这3种数据库
安装详看git, 当前操作的Sysbench版本是1.0.17
命令
1 | sysbench [options]... [testname] [command] |
- command,执行的命令,包括prepare、run和cleanup.
- prepare: 为测试提前准备数据
- run: 执行测试
- cleanup: 测试完成后对数据库进行清理。
1. CPU
cpu测试是在指定时间内,循环进行素数计算。
1 | sysbench cpu run |
常用参数:
1 | - cpu-max-prime: 素数生成数量的上限, 默认10000 |
stddev(标准差): 在相同时间内,多个线程分别完成的素数计算次数是否稳定,如果数值越低,则表示多个线程的结果越接近(即越稳定)。该参数对于单线程无意义。
性能指标
如果有2台服务器进行CPU性能对比,当素数上限和线程数一致时:
- 相同时间,比较event
- 相同event,比较时间
- 时间和event都相同,比较stddev(标准差)
2. FileIO
1 | - file-num=N 创建测试文件的数量,默认128个 |
运行
1 | sysbench --threads=2 --events=10000 fileio --file-total-size=3G --file-test-mode=rndrw prepare #准备数据 |
性能指标
不同场景下read/s, writes/s, readMiB/s和writtent MiB/s越大越好
3. 内存
1 | - memory-block-size=SIZE 测试时内存块大小 [1K] |
运行
1 | sysbench memory --memory-total-size=200G --memory-access-mode=rnd --time=5 run |
性能指标
以不同块大小传输一定的数量的数据吞吐量大小{越大越好}
4. 线程
1 | 发送64次测试线程请求,每个线程请求产生2000个数量,每个线程的锁数量为2 |
性能指标
线程并发执行,循环响应信号量花费的时间{越少越好}
5. 互斥锁
参数
1 | - mutex-num --mutex的数量 |
运行
1 | 互斥锁测试模拟所有线程在同一时刻并发运行。 |
性能指标
并发线程同时申请互斥锁循环一定次数花费的时间{越少越好}
6. MySQL
⚠️ sysbench默认数据库是sbtest, 在准备测试数据时需要先创建sbtest数据库
1 | 准备数据:sysbench /usr/local/share/sysbench/oltp_read_write.lua --time=180 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --table-size=1000000 --tables=15 --threads=8 prepare |
性能指标:qps、tps越高越好