拿到一台全新的服务器,或者在进行架构评估时,我们往往需要知道这台机器的“天花板”在哪里。了解系统各模块的性能上限,不仅能帮我们在选型时避坑,更是日常排障、性能调优的基石。
对于刚接触 Linux 的新人来说,面对繁杂的性能指标可能会感到无从下手。今天,我们就来盘点一下 Linux 系统中 CPU、内存、磁盘、网络 四大核心组件的性能测试方法和常用命令,帮你快速摸清服务器的底细。
图 1: Linux 核心组件性能指标与测试工具总览,sysbench、fio、iperf3 是我们今天的主角
一、 CPU 性能测试:算力天花板在哪里?
核心指标: 每秒事件数(Events per second)、计算耗时。测试目的: 评估单核计算能力和多核并发处理能力。
推荐工具:sysbenchsysbench 是一个模块化的、跨平台、多线程基准测试工具,非常适合用来评估 CPU 性能。
测试命令:
# 测试单核性能(计算素数直到 20000)sysbench cpu --cpu-max-prime=20000 run# 测试多核性能(假设有 8 个线程)sysbench cpu --cpu-max-prime=20000 --threads=8 run
怎么看结果?重点关注输出结果中的 events per second(每秒完成的计算次数)。这个数值越高,说明 CPU 的运算能力越强。
二、 内存性能测试:读写带宽有多大?
核心指标: 内存读写带宽(MiB/sec)、延迟。测试目的: 了解内存子系统的数据吞吐上限,这对于数据库、缓存(如 Redis)等内存密集型应用至关重要。
推荐工具:sysbench
测试命令:
# 测试内存顺序写性能(块大小 1K,总测试量 10G)sysbench memory --memory-block-size=1K --memory-total-size=10G --memory-oper=write run# 测试内存顺序读性能sysbench memory --memory-block-size=1K --memory-total-size=10G --memory-oper=read run
怎么看结果?关注 Total operations 以及括号里的带宽数据(例如 xxxx.xx MiB/sec)。这是评估内存吞吐能力最直观的体现。
三、 磁盘性能测试:I/O 瓶颈卡在哪?
磁盘性能测试通常是最复杂的,因为它涉及两个关键概念:IOPS 和 吞吐量。
- • IOPS (Input/Output Operations Per Second):每秒读写次数,决定了小文件并发处理的能力(数据库最看重这个)。
- • 吞吐量 (Throughput/Bandwidth):每秒读写的数据量(MB/s),决定了大文件传输的速度。
为了更好地理解这两者的区别,可以参考下图:
图 2: IOPS 与 吞吐量的区别。IOPS 像是在处理快递包裹,而吞吐量像是在用管道输送货物
核心指标: IOPS、吞吐量、延迟。测试目的: 评估存储系统在不同场景下的性能表现。
推荐工具:fiofio (Flexible I/O Tester) 是目前最权威、最强大的磁盘性能测试工具。
测试命令:
# 1. 测试随机写 IOPS(模拟数据库等业务,4K 块大小,队列深度 32)fio -filename=/tmp/test_file -direct=1 -iodepth=32 -thread -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=60 -group_reporting -name=test_randwrite# 2. 测试顺序读 吞吐量(模拟大文件读取,1M 块大小)fio -filename=/tmp/test_file -direct=1 -iodepth=32 -thread -rw=read -ioengine=libaio -bs=1M -size=1G -numjobs=1 -runtime=60 -group_reporting -name=test_seqread
注意:测试完毕后,记得删除测试生成的 /tmp/test_file。
怎么看结果?
- • 看 IOPS 测试结果中的
IOPS=xxx。 - • 看吞吐量测试结果中的
bw=xxx MB/s(Bandwidth)。
四、 网络性能测试:管子到底有多粗?
网络性能测试需要两台机器配合,一台作为客户端(发送端),一台作为服务端(接收端)。
核心指标: 带宽(Bandwidth/Throughput)、延迟(Latency)、抖动(Jitter)。测试目的: 验证两台机器之间的实际网络传输上限,排查网卡、交换机或路由层面的物理瓶颈。
推荐工具:iperf3网络打流的业界标杆,采用典型的 C/S(客户端/服务端)架构进行测试。其工作原理如下图所示:
图 3: iperf3 工作原理图,客户端与服务端配合进行网络打流测试
测试方法:需要两台机器。假设服务端 IP 为 192.168.1.100。
# 在服务端(接收端)启动监听:iperf3 -s# 在客户端(发送端)发起 TCP 带宽测试(持续打流 30 秒):iperf3 -c 192.168.1.100 -t 30# 如果想测试 UDP 极限性能(例如音视频传输场景),可以加上 -u 参数和目标带宽 -b:iperf3 -c 192.168.1.100 -u -b 1000M -t 30
怎么看结果?客户端和服务端都会实时打印传输速度。关注 Bitrate(比特率,通常以 Mbits/sec 或 Gbits/sec 显示)。对于 UDP 测试,还要特别注意服务端的 Lost/Total Datagrams(丢包率)。
五、 其他综合性测试:稳定性抗压
如果你只是想简单粗暴地给系统施加压力,看看机器在极端高负载下会不会死机或者降频,可以使用 stress-ng。
测试命令:
# 同时对 4 个 CPU 核心和 2 个内存节点施加压力,持续 60 秒stress-ng --cpu 4 --vm 2 --vm-bytes 1G --timeout 60s
总结
性能测试不是跑分秀,而是为了做到“心中有数”。
熟练掌握 sysbench、fio 和 iperf3 这“三板斧”,面对任何未知的 Linux 服务器,你都能快速摸清它的底牌。