CentOS虚拟机性能测试工具推荐
针对CentOS虚拟机的性能测试,需覆盖CPU、内存、磁盘I/O、网络等核心维度,以下是常用且有效的工具及使用说明:
sysbench是跨平台的基准测试工具,支持CPU、内存、磁盘I/O、数据库等多维度测试,适合快速评估虚拟机整体性能。
sysbench cpu --cpu-max-prime=100000 --threads=4 run(--threads指定线程数,可根据CPU核心数调整)。sysbench fileio --file-total-size=1G --file-test-mode=rndrw --init-rng on --max-time=300 --max-requests=0 run(--file-total-size设置测试文件大小,--file-test-mode指定读写模式,如rndrw为随机读写)。sysbench memory --memory-block-size=1K --memory-total-size=4G --memory-access-mode=rnd --threads=4 run(--memory-block-size为内存块大小,--memory-total-size为测试总内存量)。UnixBench通过多维度测试(如文件复制、进程创建、Shell脚本执行等)生成综合指数,反映CPU整体性能,适合对比不同虚拟机配置的性能差异。
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/byte-unixbench/UnixBench5.1.3.tgz;yum install gcc perl -y;cd UnixBench && ./Run -c [线程数](如-c 1测试单核,-c $(cat /proc/cpuinfo | grep processor | wc -l)测试多核)。Index值越高,CPU性能越好。SuperPI通过计算圆周率π的小数点后特定位数,测试CPU的单线程计算能力和稳定性,适合快速验证CPU性能。
git clone https://github.com/Fibonacci43/SuperPI.git;cd SuperPI && gcc -O -funroll-loops -fomit-frame-pointer pi_fftcs.c fftsg_h.c -lm -o pi_css5;./pi_css5 $((1<<20))(计算π到小数点后1M位,$((1<<22))为2M位)。real time(实际耗时)越短,CPU计算能力越强。Stream是业界公认的内存带宽测试工具,支持Copy(复制)、Scale(乘法)、Add(加法)、Triad(复合操作)四种模式,全面反映内存带宽性能。
wget https://www.cs.virginia.edu/stream/FTP/Code/stream.c;yum install gcc -y;gcc -O -fopenmp -mcmodel=medium -DSTREAM_ARRAY_SIZE=200000000 -DNTIMES=100 stream.c -o stream_omp_exe(STREAM_ARRAY_SIZE需大于CPU LLC缓存大小的4倍,如LLC为30M则设置为120M以上);numactl -N 0 -m 0 ./stream_omp_exe(numactl控制NUMA策略,-N 0 -m 0表示使用NUMA 0的CPU和内存)。Best Rate(最佳带宽)越高,内存性能越好。Intel MLC是Intel官方推出的内存延迟测试工具,支持空闲状态和负载状态下的延迟测试,适合评估内存访问延迟。
wget https://software.intel.com/content/dam/develop/external/us/en/documents/mlc_v3.9a.tgz;tar -xf mlc_v3.9a.tgz && cd mlc_v3.9a/Linux && chmod +x ./mlc && ./mlc --idle_latency -e -r -D8192(--idle_latency测试空闲延迟,-e禁用硬件prefetcher,-r随机访问,-D设置访问范围)。fio是Linux下最灵活的I/O测试工具,支持多线程/进程、随机/顺序读写、同步/异步I/O等多种模式,适合模拟真实业务场景的磁盘负载。
fio --ioengine=libaio --bs=4k --direct=1 --thread --time-based --rw=randread --filename=/home/randread.txt --runtime=60 --numjobs=1 --iodepth=1 --group_reporting --name=randread-dep1 --size=1G(--ioengine=libaio使用异步I/O引擎,--bs=4k设置块大小,--rw=randread表示随机读,--numjobs设置线程数,--runtime设置测试时长)。fio --ioengine=libaio --bs=4k --direct=1 --thread --time-based --rw=write --filename=/home/write.txt --runtime=60 --numjobs=1 --iodepth=1 --group_reporting --name=randread-dep1 --size=1G(--rw=write表示顺序写)。IOPS(每秒输入/输出操作数)越高、Bandwidth(带宽)越大,磁盘I/O性能越好。stress是简单的压力测试工具,可快速消耗CPU、内存、磁盘I/O等资源,适合验证虚拟机在高负载下的稳定性。
stress --cpu 4 --timeout=600(--cpu 4启动4个CPU消耗进程,--timeout=600运行10分钟)。stress --vm 4 --vm-bytes 50M --timeout=600(--vm 4启动4个内存消耗进程,--vm-bytes 50M每个进程分配50M内存)。iperf是网络带宽测试工具,支持TCP/UDP协议,可测试虚拟机的网络吞吐量、延迟、丢包率等指标,适合评估虚拟机的网络性能。
iperf -s(启动iperf服务);iperf -c [服务器IP地址](-c指定服务器IP,-t设置测试时长,默认10秒,-P设置并行线程数)。Bandwidth(带宽)越高,网络性能越好。