Sysbench性能测试
传送门:
Sysbench性能测试(一): sysbench简介与安装
Sysbench性能测试(二): sysbench基本使用和CPU性能测试
Sysbench性能测试(三): 内存性能测试
Sysbench性能测试(四): 文件I/O性能测试
Sysbench性能测试(五): 数据库性能测试
3 sysbench使用
3-1 基本语法
通过如下语法使用sysbench进行基准测试:
sysbench [options]...[testname][command]
# command: prepare run cleanup help
# 通用选项([]内为默认值)
--threads=N # 需要使用的线程数.[1]
--events=N # 请求总数的上限值.[0]
--time=N # 总执行时间上限值,0为无限.[10]
--forced-shutdown=STRING # 超出--time时间后强制停止的等待时间,off为禁用.[off]
--thread-stack-size=SIZE # 每个线程栈的空间大小.[64K]
--rate=N # 平均事务率,average transactions rate. 0 for unlimited rate.[0]
--report-interval=N # 以指定的秒为间隔定期报告中间统计信息,0为禁用.[0]
--report-checkpoints=[LIST,...] # 在指定的时间点,转储完整的统计数据,并且复位所有的计数器.这个选项的参数是一个由逗号分隔的值,表示从测试开始到 执行报告检查点的时间间隔,以秒为单位.默认[]为禁用
--debug[=on|off] # 输出更多的debug信息.[off]
--validate[=on|off] # 在可能的情况下执行有效性检查.[off]
--help[=on|off] # 帮助信息.[off]
--version[=on|off] # 版本信息.[off]
--config-file=FILENAME # 包含命令行选项的文件
# 弃用的旧参数名称
--tx-rate=N # deprecated alias for --rate [0]
--max-requests=N # deprecated alias for --events [0]
--max-time=N # deprecated alias for --time [0]
--num-threads=N # deprecated alias for --threads [1]
# 伪随机数生成选项
--rand-type=STRING # 随机数分布{uniform,gaussian,special,pareto} [special]
--rand-spec-iter=N # 用于数字生成的迭代次数 [12]
--rand-spec-pct=N # 被视为“special”值的百分比,percentage of values to be treated as 'special' (for special distribution) [1]
--rand-spec-res=N # percentage of 'special' values to use (for special distribution) [75]
--rand-seed=N # 随机生成树种子. 0为以当前时间生成. [0]
--rand-pareto-h=N # 帕累托分布参数h [0.2]
# Log选项
--verbosity=N # 详细级别 {5 - debug, 0 - 只输出重要信息} [3]
--percentile=N # 要在延迟统计中计算的百分比(1-100)。0为禁用[95]
--histogram[=on|off] # 在报告中打印延迟直方图[off]
# 数据库通用选项
--db-driver=STRING # 指定数据库驱动('help' to get list of available drivers) [mysql]
--db-ps-mode=STRING # 预处理语句使用模式 {auto, disable} [auto]
--db-debug[=on|off] # 打印特定数据库的调试信息 print database-specific debug information[off]
3 sysbench使用
3-1 基本语法
通过如下语法使用sysbench进行基准测试:
sysbench [options]...[testname][command]
# command: prepare run cleanup help
# 通用选项([]内为默认值)
--threads=N # 需要使用的线程数.[1]
--events=N # 请求总数的上限值.[0]
--time=N # 总执行时间上限值,0为无限.[10]
--forced-shutdown=STRING # 超出--time时间后强制停止的等待时间,off为禁用.[off]
--thread-stack-size=SIZE # 每个线程栈的空间大小.[64K]
--rate=N # 平均事务率,average transactions rate. 0 for unlimited rate.[0]
--report-interval=N # 以指定的秒为间隔定期报告中间统计信息,0为禁用.[0]
--report-checkpoints=[LIST,...] # 在指定的时间点,转储完整的统计数据,并且复位所有的计数器.这个选项的参数是一个由逗号分隔的值,表示从测试开始到 执行报告检查点的时间间隔,以秒为单位.默认[]为禁用
--debug[=on|off] # 输出更多的debug信息.[off]
--validate[=on|off] # 在可能的情况下执行有效性检查.[off]
--help[=on|off] # 帮助信息.[off]
--version[=on|off] # 版本信息.[off]
--config-file=FILENAME # 包含命令行选项的文件
# 弃用的旧参数名称
--tx-rate=N # deprecated alias for --rate [0]
--max-requests=N # deprecated alias for --events [0]
--max-time=N # deprecated alias for --time [0]
--num-threads=N # deprecated alias for --threads [1]
# 伪随机数生成选项
--rand-type=STRING # 随机数分布{uniform,gaussian,special,pareto} [special]
--rand-spec-iter=N # 用于数字生成的迭代次数 [12]
--rand-spec-pct=N # 被视为“special”值的百分比,percentage of values to be treated as 'special' (for special distribution) [1]
--rand-spec-res=N # percentage of 'special' values to use (for special distribution) [75]
--rand-seed=N # 随机生成树种子. 0为以当前时间生成. [0]
--rand-pareto-h=N # 帕累托分布参数h [0.2]
# Log选项
--verbosity=N # 详细级别 {5 - debug, 0 - 只输出重要信息} [3]
--percentile=N # 要在延迟统计中计算的百分比(1-100)。0为禁用[95]
--histogram[=on|off] # 在报告中打印延迟直方图[off]
# 数据库通用选项
--db-driver=STRING # 指定数据库驱动('help' to get list of available drivers) [mysql]
--db-ps-mode=STRING # 预处理语句使用模式 {auto, disable} [auto]
--db-debug[=on|off] # 打印特定数据库的调试信息 print database-specific debug information[off]
3-2 CPU性能测试
sysbench的CPU测试是在指定时间内,进行多轮次的素数计算。除了1和它自身外,不能被其他自然数整除的数叫做素数(质数)。一次event代表一轮的素数计算,即算出*–cpu-max-prime*以内的所有素数。
能获得的测量指标:
- 每秒完成的events数
- N%events的耗时范围。例:95%的events耗时在0.5ms以内
- 总耗时
- 完成的events总数
- 所有events的最小、最大、平均耗时
- 所有线程耗时总和
- 平均每线程完成events数/标准差
- 平均每线程耗时/标准差
CPU性能测试参数
cpu options:
--cpu-max-prime=N # 素数计算的上限值. [10000]
测试实例
# 测试素数上限=10000,执行时间=60s,线程数=4,每隔3s输出一次中间结果
sysbench --time=60 --threads=4 --report-interval=3 --test=cpu --cpu-max-prime=10000 run
测试结果
Threads started!
[ 3s ] thds: 4 eps: 9254.98 lat (ms,95%): 0.44 # eps:每秒9254.98events. 95%events耗时在0.44ms内
[ 6s ] thds: 4 eps: 9267.36 lat (ms,95%): 0.44
[ 9s ] thds: 4 eps: 9263.87 lat (ms,95%): 0.44
[ 12s ] thds: 4 eps: 9268.21 lat (ms,95%): 0.44
...# 中间输出部分删除
[ 54s ] thds: 4 eps: 9267.25 lat (ms,95%): 0.44
[ 57s ] thds: 4 eps: 9265.27 lat (ms,95%): 0.44
CPU speed:
events per second: 9265.61 # 9265.61events/s
General statistics:
total time: 60.0012s # 总耗时
total number of events: 556003 # 总events数
Latency (ms):
min: 0.43 # 最小耗时
avg: 0.43 # 平均耗时
max: 4.76 # 最大耗时
95th percentile: 0.44 # 95%events耗时在0.44ms内
sum: 239317.78 # 所有线程总耗时
Threads fairness:
events (avg/stddev): 139000.7500/66.02 # 平均每线程完成events数/标准差
execution time (avg/stddev): 59.8294/0.02 # 平均每线程执行时间/标准差