问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

sysbench测试CPU

创作时间:
作者:
@小白创作中心

sysbench测试CPU

引用
CSDN
1.
https://blog.csdn.net/m0_61066945/article/details/139217127

简介

sysbench 对 CPU 测试的原理是通过创建多个线程,并让它们执行计算密集型任务来测试 CPU 性能。它会记录每个线程执行任务所需的时间,并计算出整个测试过程的平均值、最小值和最大值,甚至输出直方图展示延迟时间,方便评估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 0sysbench线程数为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
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号