戴尔R720服务器(4)虚拟机性能测试
物理机环境
机型 | 戴尔R720 |
---|---|
系统环境 | PVE |
CPU | E5-2660V2 2.2GHz 双路 |
内存 | 1333MHz 单通道 |
内存 | 1333MHz 双通道 |
硬盘 | 用6块转速1万的2.5寸盘组的RAID5,使用了H310mini阵列卡 |
测试工具:Sysbench。一个跨平台的基准测试工具,用于评估系统性能,包括CPU、内存、文件系统和数据库性能等。apt install sysbench
安装该工具。
虚拟机1配置
对照组1
机型 | 组装 家用机 |
---|---|
系统环境 | WSL2 ubuntu |
CPU | AMD 3600 3.33GHz |
内存 | 3200MHz 双通道 |
硬盘 | PCIE3.0 满速固态 |
CPU
虚拟机1
soulio@vm-ubt1:~$ sysbench cpu --cpu-max-prime=20000 run
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)Running the test with following options:
Number of threads: 1
Initializing random number generator from current timePrime numbers limit: 20000Initializing worker threads...Threads started!CPU speed:events per second: 354.62General statistics:total time: 10.0004stotal number of events: 3547Latency (ms):min: 2.69avg: 2.82max: 6.9495th percentile: 2.81sum: 9997.72Threads fairness:events (avg/stddev): 3547.0000/0.00execution time (avg/stddev): 9.9977/0.00
对照组1
是虚拟机1性能的 2x~ ❯ sysbench cpu --cpu-max-prime=20000 run
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)Running the test with following options:
Number of threads: 1
Initializing random number generator from current timePrime numbers limit: 20000Initializing worker threads...Threads started!CPU speed:events per second: 772.42General statistics:total time: 10.0002stotal number of events: 7725Latency (ms):min: 1.26avg: 1.29max: 3.9095th percentile: 1.32sum: 9996.58Threads fairness:events (avg/stddev): 7725.0000/0.00execution time (avg/stddev): 9.9966/0.00
内存
虚拟机1
soulio@vm-ubt1:~$ sysbench memory --memory-block-size=1M --memory-total-size=2G --memory-oper=write run
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)Running the test with following options:
Number of threads: 1
Initializing random number generator from current timeRunning memory speed test with the following options:block size: 1024KiBtotal size: 2048MiBoperation: writescope: globalInitializing worker threads...Threads started!Total operations: 2048 ( 6334.09 per second)2048.00 MiB transferred (6334.09 MiB/sec)General statistics:total time: 0.3185stotal number of events: 2048Latency (ms):min: 0.15avg: 0.15max: 0.2895th percentile: 0.17sum: 315.02Threads fairness:events (avg/stddev): 2048.0000/0.00execution time (avg/stddev): 0.3150/0.00
对照组1
吞吐性能是虚拟机1的 4.5x
延迟是虚拟机1的 0.35x~ ❯ sysbench memory --memory-block-size=1M --memory-total-size=2G --memory-oper=write ru
n
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)Running the test with following options:
Number of threads: 1
Initializing random number generator from current timeRunning memory speed test with the following options:block size: 1024KiBtotal size: 2048MiBoperation: writescope: globalInitializing worker threads...Threads started!Total operations: 2048 (25949.52 per second)2048.00 MiB transferred (25949.52 MiB/sec)General statistics:total time: 0.0782stotal number of events: 2048Latency (ms):min: 0.04avg: 0.04max: 0.1095th percentile: 0.04sum: 77.58Threads fairness:events (avg/stddev): 2048.0000/0.00execution time (avg/stddev): 0.0776/0.00
增加两条内存,组双通道
接下来测试参数修改为2G、4G、8G、16G、32G (提前给虚拟机分配更大的内存容量)
2048.00 MiB transferred (6328.79 MiB/sec)
Latency (ms):min: 0.15avg: 0.15max: 0.3195th percentile: 0.18sum: 315.194096.00 MiB transferred (6416.13 MiB/sec)
Latency (ms):min: 0.15avg: 0.15max: 0.3595th percentile: 0.17sum: 628.688192.00 MiB transferred (8163.34 MiB/sec)
Latency (ms):min: 0.06avg: 0.12max: 0.3395th percentile: 0.17sum: 994.5316384.00 MiB transferred (10341.60 MiB/sec)
Latency (ms):min: 0.06avg: 0.10max: 0.3195th percentile: 0.15sum: 1572.5932768.00 MiB transferred (12636.04 MiB/sec)
Latency (ms):min: 0.06avg: 0.08max: 0.4195th percentile: 0.15sum: 2577.01
速度介于1~2x通道之间,不完全的双通道?读者,你知道原因吗?
磁盘速度
测试参数4GB
虚拟机1
soulio@vm-ubt1:~$ time dd if=/dev/zero of=/tmp/testw.dbf bs=4k count=1000000
1000000+0 records in
1000000+0 records out
4096000000 bytes (4.1 GB, 3.8 GiB) copied, 10.0372 s, 408 MB/s
对照组
~ ❯ time dd if=/dev/zero of=/tmp/testw.dbf bs=4k count=1000000
记录了1000000+0 的读入
记录了1000000+0 的写出
4096000000字节(4.1 GB,3.8 GiB)已复制,2.92994 s,1.4 GB/s
dd if=/dev/zero of=/tmp/testw.dbf bs=4k count=1000000 0.14s user 2.77s system 99% cpu 2.939 total
虚拟机常用的磁盘格式有3种
比对不同格式对读写速度的影响
# 测试磁盘写能力
time dd if=/dev/zero of=/data/testw.dbf bs=4k count=1000000# 测试磁盘读能力
time dd if=/dev/sda of=/dev/null bs=4k# 测试同时读写能力
time dd if=/dev/sda of=/tmp/testrw.dbf bs=4k
测得数据如下(娱乐测试,请勿较真。)
PVE不要用vmdk格式,太慢了
vmdk格式写入测试时太慢了,仅进行了一轮,所以5轮填的是同一个数据。vmdk格式写入时有几个问题:
测试文件超过100MB就掉速严重,掉到10MB/s以下。
速度不稳定,连续5轮测试
40960000 bytes (41 MB, 39 MiB) copied, 5.07718 s, 8.1 MB/s40960000 bytes (41 MB, 39 MiB) copied, 0.485024 s, 84.4 MB/s40960000 bytes (41 MB, 39 MiB) copied, 5.12293 s, 8.0 MB/s40960000 bytes (41 MB, 39 MiB) copied, 4.8992 s, 8.4 MB/s40960000 bytes (41 MB, 39 MiB) copied, 0.48415 s, 84.6 MB/s
上限很低,测试文件大小在4MB的时候测得最高分
213 MB/s
4096000 bytes (4.1 MB, 3.9 MiB) copied, 0.0192291 s, 213 MB/s
IO基准测试
虚拟机1
soulio@vm-ubt1:~$ sysbench fileio --file-test-mode=rndrw --file-total-size=2G --max-time=300 --max-requests=0 run
WARNING: --max-time is deprecated, use --time instead
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)Running the test with following options:
Number of threads: 1
Initializing random number generator from current timeExtra file open flags: (none)
128 files, 16MiB each
2GiB total file size
Block size 16KiB
Number of IO requests: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Initializing worker threads...Threads started!File operations:reads/s: 1210.70writes/s: 807.13fsyncs/s: 2582.91Throughput:read, MiB/s: 18.92written, MiB/s: 12.61General statistics:total time: 300.0214stotal number of events: 1380211Latency (ms):min: 0.01avg: 0.22max: 266.3895th percentile: 0.30sum: 297289.13Threads fairness:events (avg/stddev): 1380211.0000/0.00execution time (avg/stddev): 297.2891/0.00
对照组1
~ ❯ sysbench fileio --file-test-mode=rndrw --file-total-size=2G --max-time=300 --max-requests=0 run
WARNING: --max-time is deprecated, use --time instead
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)Running the test with following options:
Number of threads: 1
Initializing random number generator from current timeExtra file open flags: (none)
128 files, 16MiB each
2GiB total file size
Block size 16KiB
Number of IO requests: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Initializing worker threads...Threads started!File operations:reads/s: 668.20writes/s: 445.46fsyncs/s: 1425.69Throughput:read, MiB/s: 10.44written, MiB/s: 6.96General statistics:total time: 300.0905stotal number of events: 761909Latency (ms):min: 0.00avg: 0.39max: 179.1795th percentile: 0.67sum: 299653.07Threads fairness:events (avg/stddev): 761909.0000/0.00execution time (avg/stddev): 299.6531/0.00