版本:sysbench1.1
简介
sysbench 对 CPU 测试的原理是通过创建多个线程,并让它们执行计算密集型任务来测试 CPU 性能。它会记录每个线程执行任务所需的时间,并计算出整个测试过程的平均值、最小值和最大值,甚至输出直方图展示延迟时间,方便评估CPU的性能。
文章目录如下
1. 参数说明
1.1. 命令语法
1.2. 常用参数
2. 常见用法
2.1. 基础用法&报告解释
2.2. 常见测试方法
2.3. 直方图报告统计
2.4. 控制CPU测试
1. 参数说明
1.1. 命令语法
sysbench [参数选项] cpu run
1.2. 常用参数
--cpu-max-prime=N # 质数的最大值[默认10000]
--threads=N # 测试线程数[默认1]
--time=N # 测试时间(单位:s)[默认10]
--report-interval=N # 定期报告统计信息间隔时间(单位:s), 0表示禁用[默认0]
--verbosity=N # 详细日志级别(0~5), 0表示只输出重要信息, 5表示输出debug。[默认3]
--histogram=[on|off] # 输出延迟直方图[默认off]
2. 常见用法
2.1. 基础用法&报告解释
测试cpu性能可以直接执行
sysbench cpu run
- 默认线程数:1
- 默认质数计算最大值:10000
- 默认测试时间:10秒
整个报告包含四部分,解释如下:
CPU speed:
events per second: 1185.43 # 每个线程吞吐量/s
Throughput:
events/s (eps): 1185.4333 # 每个线程吞吐量/s
time elapsed: 10.0006s # 每个线程运行时间
total number of events: 11855 # 每个线程总事务数
Latency (ms):
min: 0.75 # 最小执行时间
avg: 0.84 # 平均执行时间
max: 33.74 # 最大执行时间
95th percentile: 1.06 # 95%执行时间
sum: 9984.98 # 所有线程总处理时间
Threads fairness:
events (avg/stddev): 11855.0000/0.00 # 所有线程总事务数/标准偏差
execution time (avg/stddev): 9.9850/0.00 # 每个线程处理的总时间/标准偏差
- Threads fairness 部分的偏差值为0,这是因为测试线程数为1,所以没有偏差
2.2. 常见测试方法
设置最大质数10w,线程数4,每秒输出1次统计信息,共测试5秒
sysbench --cpu-max-prime=100000 --threads=4 --time=5 --report-interval=1 cpu run
测试CPU负载5倍(线程数设置为CPU*5)
- CPU核心数可以通过lscpu查看,我的CPU为6,所以设置线程数30
sysbench --cpu-max-prime=100000 --threads=30 --time=5 --report-interval=1 cpu run
2.3. 直方图报告统计
输出直方图开启 --histogram 参数即可,可以与其他参数一起使用。这里举个例子:
sysbench --histogram=on cpu run
直方图分为3部分:
- value:响应时间(ms),从低到高排序。
- distribution:将响应时间的事务数按比例来均匀分布的效果图。
- count:每个响应时间所执行的次数。
整个直方图是以响应时间和每类响应时间的次数来统计,按比例使用 * 来画出直方图。通过直方图可以清晰得知每个阶段的响应时间次数,如上图大部分响应时间在 0.768 ~ 0.888ms,其他段响应时间相对较少。
2.4. 控制CPU测试
- 我们可以通过top命令来观察测试CPU的id
测试单线程
sysbench cpu run
使用CPU4
测试多线程
sysbench --threads=3 cpu run
使用CPU2、CPU4、CPU5
从测试结果来看,sysbench对CPU的测试并不是从0开始,也没有顺序可言。当需要单独测试某个CPU时是无法通过sysbench来控制的,所以需要使用另一个命令配合 numactl
yum安装方法:
sudo yum -y install numactl
详细用法见另一篇文章:
CPU 绑核_numactl-CSDN博客
测试CPU0的性能(在 sysbench 前面加 numactl -C 0 sysbench线程数为1)
numactl -C 0 sysbench cpu run
测试CPU1~4的性能(在 sysbench 前面加 numactl -C 1-4 同时sysbench也要修改为4个线程)
numactl -C 1-4 sysbench --threads=4 cpu run
测试CPU1,CPU3的性能(在 sysbench 前面加 numactl -C 1,3 同时sysbench也要修改为2个线程)
numactl -C 1,3 sysbench --threads=2 cpu run