目录

sysbench测试CPU

sysbench测试CPU


版本:sysbench1.1


简介

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秒

https://i-blog.csdnimg.cn/blog_migrate/e52bccde1d57e05951f04fb74991bc2d.png

整个报告包含四部分,解释如下:

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

https://i-blog.csdnimg.cn/blog_migrate/ba5b2853626670146032a3f2dc2fe4d6.png

测试CPU负载5倍(线程数设置为CPU*5)

  • CPU核心数可以通过lscpu查看,我的CPU为6,所以设置线程数30
sysbench --cpu-max-prime=100000 --threads=30 --time=5 --report-interval=1 cpu run

https://i-blog.csdnimg.cn/blog_migrate/e63f93ae187395f4ae0adde2ced3d17f.png

2.3. 直方图报告统计

输出直方图开启 –histogram 参数即可,可以与其他参数一起使用。这里举个例子:

sysbench --histogram=on cpu run

https://i-blog.csdnimg.cn/blog_migrate/d06b19525fb1eb1327fabe8ed2d9b3a4.png

直方图分为3部分:

  • value:响应时间(ms),从低到高排序。
  • distribution:将响应时间的事务数按比例来均匀分布的效果图。
  • count:每个响应时间所执行的次数。

整个直方图是以响应时间和每类响应时间的次数来统计,按比例使用 * 来画出直方图。通过直方图可以清晰得知每个阶段的响应时间次数,如上图大部分响应时间在 0.768 ~ 0.888ms,其他段响应时间相对较少。

2.4. 控制CPU测试

  • 我们可以通过top命令来观察测试CPU的id

测试单线程

sysbench cpu run

https://i-blog.csdnimg.cn/blog_migrate/dbc5f6255fdfc9aad23ffefc208a886e.png

使用CPU4

测试多线程

sysbench --threads=3 cpu run

https://i-blog.csdnimg.cn/blog_migrate/1d6c5ff0ed941d0ea4f7aa2dbd2611ae.png

使用CPU2、CPU4、CPU5

从测试结果来看,sysbench对CPU的测试并不是从0开始,也没有顺序可言。当需要单独测试某个CPU时是无法通过sysbench来控制的,所以需要使用另一个命令配合 numactl

yum安装方法:

sudo yum -y install numactl

详细用法见另一篇文章:

测试CPU0的性能(在 sysbench 前面加 numactl -C 0 sysbench线程数为1)

numactl -C 0 sysbench cpu run

https://i-blog.csdnimg.cn/blog_migrate/6920eb5dc70ea35ab30c5172c3e45cee.png

测试CPU1~4的性能(在 sysbench 前面加 numactl -C 1-4 同时sysbench也要修改为4个线程)

numactl -C 1-4 sysbench --threads=4 cpu run

https://i-blog.csdnimg.cn/blog_migrate/46e544edb798772a4a8ea514aa52233c.png

测试CPU1,CPU3的性能(在 sysbench 前面加 numactl -C 1,3 同时sysbench也要修改为2个线程)

numactl -C 1,3 sysbench --threads=2 cpu run

https://i-blog.csdnimg.cn/blog_migrate/a3e475e90e4013d59b288686fb04e62c.png