CPU性能测试
服务器配置对比
| 服务器 |
PowerEdge R7415 |
PowerEdge R730 |
| CPU |
AMD EPYC 7281 16-Core Processor |
Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz * 2 |
| 内存 |
16G DDR4 2666 MHz * 8 |
16G DDR4 2400 MHz * 8 |
| RAID-type |
H730P/2G |
H730P/2G |
| 硬盘 |
600G SAS 12.0Gb/s * 2 |
800G SSD 6.0Gb/s * 8 |
AMD EPYC 7281 CPU基本参数
| CPU 核心数量 |
16 |
| 线程数量 |
32 |
| L3缓存 |
32MB |
| 主频 |
2.1GHz |
| 动态加速频率 |
2.7GHz |
| 热设计功耗(TDP) |
155/170W |
本次主要是对比两台服务器的CPU性能,一个是AMD 单颗 16核 32线程、 一个是intel 两颗 共16核32线程
| Bash |
|---|
| root@pts/0 # cat /etc/redhat-release
CentOS release 6.9 (Final)
|
sysbench工具
sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况
它主要包括以下几种方式的测试:
| Bash |
|---|
| cpu性能
磁盘io性能
调度程序性能
内存分配及传输速度
POSIX线程性能
数据库性能(OLTP基准测试)
|
目前sysbench主要支持 MySQL,pgsql,oracle 这3种数据库。对CPU的测试,主要是进行素数的加法运行
二进制安装
| Bash |
|---|
| root@pts/0 # yum -y install sysbench
|
下面针对不同CPU进行单独测试,测试命令如下:
| Bash |
|---|
| sysbench cpu --cpu-max-prime=50000 --threads=32 --time=300 run
|
参数介绍
| Bash |
|---|
| --cpu-max-prime: 素数生成数量的上限
如果设置为3,则表示2、3、5(要计算1-5共5次);如果设置为10,则表示2、3、5、7、11、13、17、19、23、29(要计算1-29共29次)
- 默认值为10000
|
| Bash |
|---|
| --threads: 线程数,CPU是32线程的,所以这里测试为32
如果设置为1,则sysbench仅启动1个线程进行素数的计算;如果设置为2,则sysbench会启动2个线程,同时分别进行素数的计算
- 默认值为1,即单线程
|
| Bash |
|---|
| --time: 运行时长,单位秒,这里测试300秒
如果设置为5,则sysbench会在5秒内循环往复进行素数计算,从输出结果可以看到在5秒内完成了几次;
比如配合--cpu-max-prime=3,则表示第一轮算得3个素数, 如果时间还有剩就再进行一轮素数计算,直到时间耗尽。
- 默认值为10
相同时间,比较的是谁完成的event多
|
| Bash |
|---|
| --events: event上限次数
每完成一轮就叫一个event,设置为100,则表示当完成100次event后,即使时间还有剩,也停止运行
- 默认值为0,则表示不限event次数
相同event次数,比较的是谁用时更少
|
测试结果对比
1.AMD的结果
| Bash |
|---|
| sysbench 1.0.17 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 32
Initializing random number generator from current time
Prime numbers limit: 50000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 2338.40
General statistics:
total time: 300.0112s
total number of events: 701549
Latency (ms):
min: 7.01
avg: 13.68
max: 56.78
95th percentile: 13.70
sum: 9599587.24
Threads fairness:
events (avg/stddev): 21923.4062/35.32
execution time (avg/stddev): 299.9871/0.01
|
2.Intel的结果
| Bash |
|---|
| sysbench 1.0.17 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 32
Initializing random number generator from current time
Prime numbers limit: 50000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 1963.80
General statistics:
total time: 300.0156s
total number of events: 589176
Latency (ms):
min: 9.98
avg: 16.29
max: 134.85
95th percentile: 16.12
sum: 9599304.04
Threads fairness:
events (avg/stddev): 18411.7500/1125.14
execution time (avg/stddev): 299.9783/0.02
|
结果值对比
| 重要参数 |
参数含义 |
AMD 7281 |
intel E5-2620 |
| CPU speed: |
|
|
|
| events per second |
所有线程平均每秒完成event的个数 |
2338.40 |
1963.80 |
| General statistics: |
|
|
|
| total time |
总共消耗的时间 |
300.0112s |
300.0156s |
| total number of events |
所有线程完成的event个数 |
701549 |
589176 |
| Latency (ms): |
|
|
|
| min |
完成1次event的最少耗时 |
7.01 |
9.98 |
| avg |
所有event的平均耗时 |
13.68 |
16.29 |
| max |
完成1次event的最多耗时 |
56.78 |
134.85 |
| 95th percentile |
95%次event完成的时间 |
13.70 |
16.12 |
| sum |
所有线程的时间综合 |
9599587.24 |
9599304.04 |
| Threads fairness: |
|
|
|
| events (avg/stddev) |
平均每个线程完成envet的次数,后一个值是标准差 |
21923.4062/35.32 |
18411.7500/1125.14 |
| execution time (avg/stddev) |
平均每个线程平均耗时,后一个值是标准差 |
299.9871/0.01 |
299.9783/0.02 |
stddev(标准差): 在相同时间内,多个线程分别完成的素数计算次数是否稳定,如果数值越低,则表示多个线程的结果越接近(即越稳定)。该参数对于单线程无意义
总结
如果多台服务器进行CPU性能对比,当线程和素数个数一定时:相同时间,比较event;相同event,比较时间;时间和event都相同,比较stddev(标准差)