跨平台使用sysbench测试CPU性能的脚本编写与结果解读咨询
sysbench CPU测试结果相关问题解答
关于核心指标的问题
events per second(每秒事件数)就是sysbench CPU测试的核心性能指标,没有问题。
这里的单个「event」对应的是完整跑完一次从2到cpu-max-prime设定值的全量素数校验计算,这个数值越高,代表单位时间内CPU能完成的整数计算轮次越多,纯CPU计算性能越强。
其他输出项都是辅助参考:
- 延迟类指标反映单轮素数计算的耗时,和每秒事件数成反比
- 总事件数是测试周期内累计完成的计算轮次,和每秒事件数直接相关
- 线程公平性指标看多核心负载是否均匀,标准差越小代表调度越合理,不会出现部分核心满载、部分核心闲置的情况,不属于性能高低的判断指标。
关于调高cpu-max-prime后每秒事件数下跌的问题
这个现象完全是待计算素数规模增大导致的。
sysbench的CPU测试用试除法做素数校验,计算量不是随素数上限线性增长的:当你把cpu-max-prime从默认的10000调到600000时,单轮计算需要执行的校验操作量会暴涨上百倍,单event的耗时会从毫秒级涨到几百毫秒,每秒能完成的event数自然会快速下降。
这里提个注意点:跨设备做性能对比的时候,必须固定cpu-max-prime、测试线程数两个参数,不然测出来的数值没有任何对比意义。
补充:你当前脚本的小问题
你贴的运行日志里已经提示参数废弃了,--test=cpu和--num-threads在新版sysbench里已经不用了,改成下面的写法更兼容:
# 获取设备全部逻辑CPU核心数 prc_count=$(nproc --all) # 负载系数,填1就是满核心压测,填0.5就是用一半核心 factor=1 run_threads=$((prc_count * factor)) # 固定素数上限,保证跨设备测试结果可比 max_prime=600000 sysbench cpu \ --threads=$run_threads \ --cpu-max-prime=$max_prime \ run
你这次跑的结果里128线程下事件标准差只有0.67,说明多线程负载分配很均匀,没有明显的调度瓶颈。
内容的提问来源于stack exchange,提问作者Stat.Enthus
相关产品推荐
相关产品推荐

