简单测试阿里云Linux主机性能
|Word Count:2.2k|Reading Time:11mins|Post Views:
在实际的虚拟化平台建设项目中,交付物的测试用例都一直是个需要注意的重要事件。期间,设计原始规划是否合理、资源配置是否正确,以及和甲方以及其他参与者的扯皮……
现在,我尝试分别使用阿里云的99元(张家口区域,规格为ecs.e-c1m1.large)和199元ECS(北京区域,规格为ecs.e-c1m2.large)来进行一个简单的性能测试。
2024.05 摄于北京通州,一个不请自来的松鼠
CPU测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| # 查看CPU信息 [root@beijing ~]# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 85 model name : Intel(R) Xeon(R) Platinum stepping : 4 microcode : 0x1 cpu MHz : 2500.002 cache size : 33792 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 22 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch pti fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit mmio_stale_data retbleed gds bogomips : 5000.00 clflush size : 64 cache_alignment : 64 address sizes : 46 bits physical, 48 bits virtual power management:
# 使用sysbench命令来进行压力测试 dnf install -y sysbench # 调用2个CPU线程来执行20000次素数计算 sysbench cpu --cpu-max-prime=20000 --threads=2 run
# 99元主机 Prime numbers limit: 20000 Initializing worker threads... Threads started! CPU speed: events per second: 823.16 General statistics: total time: 10.0024s total number of events: 8235 Latency (ms): min: 2.35 avg: 2.43 max: 10.11 95th percentile: 2.52 sum: 19991.07 Threads fairness: events (avg/stddev): 4117.5000/18.50 execution time (avg/stddev): 9.9955/0.00
# 199元主机 Prime numbers limit: 20000 Initializing worker threads... Threads started! CPU speed: events per second: 552.77 General statistics: total time: 10.0021s total number of events: 5530
Latency (ms): min: 3.29 avg: 3.62 max: 4.48 95th percentile: 3.68 sum: 19999.93 Threads fairness: events (avg/stddev): 2765.0000/7.00 execution time (avg/stddev): 10.0000/0.00
|
内存测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| # 内存测试同样使用sysbench来进行 # memory options: --memory-block-size=SIZE # 内存块大小 [1K] --memory-total-size=SIZE # 传输数据的总大小 [100G] --memory-scope=STRING # 内存访问范围 {global,local} [global] --memory-hugetlb[=on|off] # 从HugeTLB池中分配内存 [off] --memory-oper=STRING # 内存操作类型 {read, write, none} [write] --memory-access-mode=STRING # 内存访问模式 {seq,rnd} [seq] # 测试用例 # 线程数=8 每1s输出一次中间结果 内存块大小=8K 传输数据总量=100G 内存访问模式=顺序访问 内存操作=写 sysbench --threads=8 --time=60 --report-interval=1 --test=memory --memory-block-size=4K --memory-total-size=10G --memory-access-mode=seq run
# 99元主机 Total operations: 2621440 (1130797.63 per second) 10240.00 MiB transferred (4417.18 MiB/sec) General statistics: total time: 2.3168s total number of events: 2621440 Latency (ms): min: 0.00 avg: 0.01 max: 21.02 95th percentile: 0.00 sum: 16055.58 Threads fairness: events (avg/stddev): 327680.0000/0.00 execution time (avg/stddev): 2.0069/0.08
# 199元主机 Total operations: 2621440 (3070102.62 per second) 10240.00 MiB transferred (11992.59 MiB/sec) General statistics: total time: 0.8521s total number of events: 2621440 Latency (ms): min: 0.00 avg: 0.00 max: 17.02 95th percentile: 0.00 sum: 5260.94 Threads fairness: events (avg/stddev): 327680.0000/0.00 execution time (avg/stddev): 0.6576/0.02
|
顺序读写测试
测试
1 2 3 4 5 6
| # 写测试,创建一个10GB测试文件 dd if=/dev/zero of=/tmp/testspeed bs=1M count=10240 # 清除缓存 sync # 读测试 dd if=/tmp/testspeed of=/dev/null bs=1M
|
结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| # 99元主机 # 写测试 10737418240 bytes (11 GB, 10 GiB) copied, 88.9942 s, 121 MB/s # 读测试 10737418240 bytes (11 GB, 10 GiB) copied, 91.3912 s, 117 MB/s
# 199元主机 # 写测试 10737418240 bytes (11 GB, 10 GiB) copied, 83.6892 s, 128 MB/s # 读测试 10737418240 bytes (11 GB, 10 GiB) copied, 67.7363 s, 159 MB/s
# 阿里云c7.xlarge 规格主机 # 写测试 10737418240 bytes (11 GB) copied, 62.7431 s, 171 MB/s # 读测试 10737418240 bytes (11 GB) copied, 59.4358 s, 181 MB/s
|
随机读写测试
测试用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| # fileio options([]为默认参数): --file-num=N # 创建的文件数量 [128] --file-block-size=N # 在所有IO操作中使用的块大小 [16384] --file-total-size=SIZE # 要创建的文件的总大小 [2G] --file-test-mode=STRING # 测试模式 {seqwr(顺序写), seqrewr(顺序重写), seqrd(顺序读), rndrd(随机读), rndwr(随机写), rndrw(随机读写)} --file-io-mode=STRING # 文件操作模式 {sync(同步),async(异步),mmap} [sync] --file-extra-flags=[LIST,...] # 用于打开文件的附加标志列表 {sync,dsync,direct} [] --file-fsync-freq=N # 执行N条请求数量后执行fsync() (0 - don't use fsync()) [100] --file-fsync-all[=on|off] # 每条写指令后执行fsync() [off] --file-fsync-end[=on|off] # 测试执行后执行fsync() [on] --file-fsync-mode=STRING # 同步方式 {fsync, fdatasync} [fsync] --file-merged-requests=N # 允许范围内,最多合并IO请求数量 (0 - don't merge) [0] --file-rw-ratio=N # 组合测试读/写比率 [1.5]
# 线程数=4 每隔4s输出一次结果 测试时间=60s # 文件数=2 文件总大小=4G 文件操作模式=随机读写 # 块大小 16384 sysbench --threads=4 --report-interval=4 --time=60 --test=fileio --file-num=2 --file-total-size=4G --file-test-mode=rndrw prepare
sysbench --threads=4 --report-interval=4 --time=60 --test=fileio --file-num=2 --file-total-size=4G --file-test-mode=rndrw run
sysbench --threads=4 --report-interval=4 --time=60 --test=fileio --file-num=2 --file-total-size=4G --file-test-mode=rndrw cleanup
|
测试结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| # 99元主机 File operations: reads/s: 2239.65 writes/s: 1493.08 fsyncs/s: 74.78 Throughput: read, MiB/s: 34.99 written, MiB/s: 23.33 General statistics: total time: 60.0113s total number of events: 228492 Latency (ms): min: 0.00 avg: 1.05 max: 107.37 95th percentile: 7.17 sum: 239909.29 Threads fairness: events (avg/stddev): 57123.0000/437.20 execution time (avg/stddev): 59.9773/0.00
# 199元主机 File operations: reads/s: 1574.11 writes/s: 1049.40 fsyncs/s: 52.58 Throughput: read, MiB/s: 24.60 written, MiB/s: 16.40 General statistics: total time: 60.0261s total number of events: 160631 Latency (ms): min: 0.00 avg: 1.49 max: 44.26 95th percentile: 7.84 sum: 239862.23 Threads fairness: events (avg/stddev): 40157.7500/118.32 execution time (avg/stddev): 59.9656/0.00
|
网络测试
该测试首先测试在使用阿里云公共网络的情况下,张家口主机访问北京主机的网速和北京主机访问张家口主机的网速。在阿里云内网测试中,则需要在北京和张家口的主机对应区域和vpc再创建同规格主机进行测试。
公网测试
1 2 3 4 5 6 7
| # 99元主机 [root@zhangjiakou ~]# scp /tmp/testspeed test@39.102.209.9:/home/test/ testspeed 0% 29MB 405.5KB/s
# 199元主机 [root@beijing ~]# scp /tmp/testspeed test@39.98.54.184:/home/test/ testspeed 0% 15MB 745.4KB/s
|
内网测试
使用scp测试
1 2 3 4 5 6 7
| # 99元主机 [root@zhangjiakou ~]# scp /tmp/testspeed test@172.24.78.59:/home/test/ testspeed 31% 3266MB 118.2MB/s
# 199元主机 [root@beijing ~]# scp /tmp/testspeed test@172.17.83.163:/home/test/ testspeed 60% 6216MB 112.6MB/s
|
使用iperf3测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| # 在所有主机上安装iperf3,然后配置安全组添加9001端口、防火墙开启9001端口或者关闭防火墙 dnf install -y iperf3
# 99元主机 # 被测主机启动监听 [root@zhangjiakou ~]# iperf3 -s -p 9001 ----------------------------------------------------------- Server listening on 9001 -----------------------------------------------------------
# 实施测试主机,-c 目标IP -i 每3秒刷新一次 -p 连接端口 -t 执行时长 -f 数据单位 -P 并发数量 [root@Test ~]# iperf3 -c 172.24.78.59 -i 3 -p 9001 -t 100 -f M -P 20 [ 37] 3.00-4.17 sec 13.8 MBytes 11.7 MBytes/sec 299 2.83 KBytes [ 39] 3.00-4.17 sec 8.75 MBytes 7.47 MBytes/sec 239 1.41 KBytes [ 41] 3.00-4.17 sec 16.2 MBytes 13.9 MBytes/sec 555 4.24 KBytes [ 43] 3.00-4.17 sec 12.9 MBytes 11.0 MBytes/sec 362 4.24 KBytes [SUM] 3.00-4.17 sec 282 MBytes 241 MBytes/sec 8224 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-4.17 sec 78.7 MBytes 18.9 MBytes/sec 2006 sender [ 5] 0.00-4.17 sec 0.00 Bytes 0.00 MBytes/sec receiver [ 7] 0.00-4.17 sec 45.6 MBytes 10.9 MBytes/sec 1386 sender [ 7] 0.00-4.17 sec 0.00 Bytes 0.00 MBytes/sec receiver [ 9] 0.00-4.17 sec 33.5 MBytes 8.03 MBytes/sec 970 sender [ 9] 0.00-4.17 sec 0.00 Bytes 0.00 MBytes/sec receiver
# 被测试主机抓取瞬时流量,rxkB/s为接受流量,txkB/s为发送流量 # 270571KB/s折合250MB/s [root@zhangjiakou ~]# sar -n DEV 2 Linux 5.14.0-427.31.1.el9_4.x86_64 (zhangjiakou) 08/28/2024 _x86_64_ (2 CPU)
10:11:05 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 10:11:07 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:11:07 PM eth0 183009.50 23761.50 270571.87 1568.17 0.00 0.00 0.00
# 199元主机,128446.22KB/s折合128MB/s [root@beijing ~]# iperf3 -s -p 9001 [root@Test ~]# iperf3 -c 172.17.83.162 -i 3 -p 9001 -t 100 -f M -P 20 [root@beijing ~]# sar -n DEV 2 Linux 5.14.0-427.31.1.el9_4.x86_64 (beijing) 08/28/2024 _x86_64_ (2 CPU)
10:28:40 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 10:28:42 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:28:42 PM eth0 86878.00 24077.00 128446.22 1589.40 0.00 0.00 0.00 0.00
|
使用iftop
- 99元主机,显示为1.88Gb,和sar命令结果相符(注意,iftop显示单位为b而非B)
- 199元主机,显示结果为710Mb
测试结论
先说结果,两者都是垃圾。最有意思的是张家口的99元主机性能比北京的199元主机性能除了内存性能明显落后外,其他并不占下风。这100块是多出了个寂寞……