对Linux系统进行运维以及开展开发工作期间,性能测试属于评估系统稳定性的重要环节,是评估系统承载能力的重要环节,也是评估系统资源效率的重要环节。选择恰当的性能测试软件,能够助力我们精确找出瓶颈所在,能够助力我们优化系统配置,能够确保在高负载状况下服务依旧稳定且可靠。下面会介绍几款经常会用到的Linux性能测试工具以及它们的应用场景。
如何测试CPU性能
系统的核心计算单元是CPU,其性能对整体处理速度有着直接影响,常用的测试工具存在sysbench和stress-ng,sysbench不但支持CPU测试,而且还能够开展内存、线程以及数据库基准测试,借助计算质数用以评估CPU的整数运算能力,stress-ng则更加着重于压力测试,能够模拟复杂的CPU负载,涵盖浮点运算、位操作等多种计算类型,以此帮助评估CPU在极端条件下的稳定性以及散热表现。

除去基础算力测试之外,还需要去关注CPU在复杂情景之下的表现,举例来说,运用sysbench的--threads参数能够模拟多线程并发,进而去观察CPU的调度效率以及核心利用率,联合top或者htop监控工具,能够实时查看用户态和内核态的CPU时间分布,以及上下文切换次数,这些数据对于数据库服务器或者高并发应用场景而言尤为重要,能够有效地发现因CPU争抢所导致的性能瓶颈。
如何测试内存性能
内存性能测试主要对读写速度进行评估,还涉及延迟以及带宽,工具像sysbench和memtester被广泛运用,sysbench的内存测试模式能够指定块大小,还能指定操作类型,也就是读或者写linux操作系统怎么样,以此来模拟并非相同的应用对内存的访问模式,memtester则着重于检测内存硬件错误,借助写入特定数据模式并且回读验证,从而确保内存条在长期处于高负载状态下的可靠性。

当下的现代服务器,一般常常配备着大容量的内存,在进行测试之时,需要去留意关切NUMA架构所产生的影响,运用numactl这样的工具,能够将内存访问绑定限定到特定的节点之上,以此来测试跨节点方式访问所带来的延迟方面的开销,除此之外,运用stream这个测试工具,能够对内存带宽予以测量,这对于科学计算以及大数据处理平台而言是相当至关重要的,借助于调整测试数组的大小,能够对不同层级的缓存也就是L1/L2/L3的命中率进行评估,从而为优化数据结构以及算法奠定提供依据。
如何测试磁盘IO性能
磁盘IO性能,是数据库的核心指标,也是文件服务的关键指标。fioandroid linux,也就是Flexible I/O Tester,是功能最为强大的工具,具有支持多种I/O引擎跟诸多模式的特性。它能够模拟随机读,还能模拟顺序写,也可以操作混合负载等场景,借助调整块大小,以及队列深度,还有并发任务数的方式,精准测量IOPS,也就是每秒输入输出操作数,以及吞吐量,也就是MB/s。举个例子,使用这样一条“fio ,其名叫 randread ,并且 ioengine 是 libaio ,rw 为 randread ”的命令去测试随机读性能 。

实际生产环境里,要考虑到文件系统的影响,像ext4、XFS这类,还有存储架构的影响,像RAID、SSD这类。使用fio测试之时,可结合iostat工具,去监控磁盘利用率,监控响应时间,监控等待队列长度。对于云服务器而言,要注意供应商的IOPS限制,防止因超额订阅致使性能急剧下降。定期开展长期稳定性测试,能发现磁盘在持续写入情况下的性能衰减问题。
如何测试网络性能
网络性能测试涵盖带宽、延迟以及丢包率等指标,iperf3属于通常会用到的带宽测试工具,借助客户端和服务器模式,能够测量TCP和UDP协议的最大吞吐量,比如,于服务器端运行iperf3 -s,在客户端运行iperf3 -c就能得到双向带宽报告,关于延迟测试linux 性能测试软件,运用ping以及traceroute能够取得基础网络质量数据。
在高并发网络应用场景当中,还需要去测试连接处理的能力,工具像netperf能够模拟大量的并发连接,测量每秒事务数也就是TPS以及请求响应时间,结合netstat或者ss命令,能够监控网络连接状态、重传率以及缓冲区使用情况,对于微服务架构而言,建议在容器网络比如Docker bridge、Calico当中进行跨节点测试,确保虚拟化网络不会引入额外的性能开销。
如何测试系统综合性能

综合性能测试的目的在于对系统整体表现予以评估,常用的工具包含UnixBench以及Phoronix Test Suite,UnixBench借助运行一系列测试脚本(像是文件复制、进程创建、管道吞吐之类)来给出系统评分,这有利于不同硬件配置之间进行横向比较,Phoronix Test Suite集成了大量测试用例,它支持自定义测试套件以及结果可视化,适宜用于长期性能追踪。
综合测试要模拟真实业务负载,比如,在Web服务器上同时开展CPU密集型任务像图像处理,内存密集型任务如缓存查询,IO密集型任务若是日志写入,借由vmstat以及dstat监控系统整体资源使用状况,通过剖析CPU空闲时间、内存换页率与磁盘等待队列,能够识别系统瓶颈所在之处,为容量规划给予数据支持。
如何选择性能测试软件

选择性能测试软件之际,要将测试目标考虑,要把系统环境考虑,还要把学习成本考虑。针对快速验证而言,能够选择像sysbench这样属集成化的工具;针对深度调优来讲,fio以及perf等专业工具会更适宜。还得留意工具跟Linux内核版本之间的兼容性,比如ebpf工具是需要较新内核予以支持的。开源社区活跃度同样是重要的指标,积极维护的工具能够更好地适配新技术 。
测试环境要尽可能模拟生产环境,这其中涵盖硬件配置,还有系统参数以及典型工作负载,要避免于虚拟化开发环境里直接开展性能评估,因为资源隔离以及超配有可能致使测试结果失真,建议采用自动化测试流程,运用Jenkins或者Ansible定期去执行测试套件,以此建立性能基线linux 性能测试软件,在系统升级或者配置变更之后,通过对比基线数据就能迅速识别性能回归。
过程里于性能测试期间你碰到过哪一些意料之外的瓶颈呢,是硬件兼容性方面的问题致使的还是内核参数配置所造成的呀,欢迎于评论区域分享你那实战方面的经验哟,要是觉着本文具备帮助呢,请点赞并且分享给更多有需要的朋友呀!
