文章目录
本文对Linux下性能测试的不同方面和各自的工具做一个简单的介绍。
cpu测试
unixbench
UnixBench(即曾经的BYTE基准测试)为类UNIX系统提供了基础的衡量指标,其官方主页为http://code.google.com/p/byte-unixbench。它并不是专门测试CPU的基准测试,而是测试了系统的许多方面,它的测试结果不仅会受系统的CPU、内存、磁盘等硬件的影响,也会受操作系统、程序库、编译器等软件系统的影响。UnixBench中包含了许多测试用例,如文件复制、管道的吞吐量、上下文切换、进程创建、系统调用、基本的2D和3D图形测试,等等。
stress
sysbench
SysBench是一个模块化的、跨平台的、支持多线程的基准测试工具,它主要评估的是系统在模拟的高压力的数据库应用中的性能,其官方主页为http://sysbench.sourceforge.net。其实,SysBench并不是一个完全CPU密集型的基准测试,它主要衡量了CPU调度器、内存分配和访问、文件系统I/O操作、线程创建等多方面的性能。
SpecCPU2006
SPECjbb2015
Super PI
内存测试
lmbench3
LMbench是一个使用GNU GPL许可证发布的免费和开源的自由软件,可以运行在类UNIX系统中,以便比较它们的性能,其官方网址是:http://www.bitmover.com/lmbench。
LMbench是一个用于评价系统综合性能的可移植性良好的基准测试工具套件,它主要关注两个方面:带宽(bandwidth)和延迟(latency)。LMbench中包含了很多简单的基准测试,它覆盖了文档读写、内存操作、管道、系统调用、上下文切换、进程创建和销毁、网络等多方面的性能测试。
另外,LMbench能够对同级别的系统进行比较测试,反映不同系统的优劣势,通过选择不同的库函数我们就能够比较库函数的性能。更为重要的是,作为一个开源软件,IMbench提供一个测试框架,假如测试者对测试项目有更高的测试需要,能够修改少量的源代码就达到目的(比如现在只能评测进程创建、终止的性能和进程转换的开销,通过修改部分代码即可实现线程级别的性能测试)。
Memtest86+
Memtest86+是基于由Chris Brady所写的著名的Memtest86改写的一款内存检测工具,其官方网址为:http://www.memtest.org。该软件的目标是提供一个可靠的软件工具,进行内存故障检测。Memtest86+同Memtest86一样是基于GNU GPL许可证进行开发和发布的,它也是免费和开源的。
Memtest86+对内存的测试不依赖于操作系统,它提供了一个可启动文件镜像(如ISO格式的镜像文件),将其烧录到软盘、光盘或U盘中,然后启动系统时就从软驱、光驱或U盘中的Memtest86+启动,之后就可以对系统的内存进行测试。在运行Memtest86+时,操作系统都还没有启动,所以此时的内存基本上是未使用状态(除了BIOS等可能占用了小部分内存)。一些高端计算机主板甚至将Mestest86+默认集成到BIOS中。
stress
stream
STREAM是一个用于衡量系统在运行一些简单矢量计算内核时能达到的最大内存带宽和相应的计算速度的基准测试程序,其官方网址为:http://www.cs.virginia.edu/stream。STREAM可以运行在DOS、Windows、Linux等系统上。另外,STREAM的作者还开发了对STREAM进行扩充和功能增强的工具STREAM2,可以参考其主页:http://www.cs.virginia.edu/stream/stream2。
磁盘/文件系统测试
hdparm
hdparm是一个用于获取和设置SATA和IDE设备参数的工具。
dd
fio
fio是一个被广泛使用的进行磁盘性能及压力测试的工具。它功能强大而灵活,可以用它定义(模拟)出各种工作负载(workload),模拟真实使用场景,以更准确地衡量磁盘的性能。除了测试磁盘读写的带宽以外,它还统计IOPS并且以不同的延迟时间分布表示;除了总的延迟时间,它还分别统计I/O递交的时间延迟和I/O完成的时间延迟。
fio的主页是:http://git.kernel.dk/?p=fio.git;a=summary。它可以运行在Linux、UNIX、Windows等多个操作系统平台上,多数Linux发行版也包含它的安装包。
iozone
bonnie++
Bonnie++是以Bonnie 的代码为基础编写而成的软件,它使用一系列对硬盘驱动器和文件系统的简单测试来衡量其性能。Bonnie++可以模拟像数据库那样去访问一个单一的大文件,也可以模拟像Squid那样创建、读取和删除许许多多的小文件。它可以实现有序地读写一个文件,也可以随机地查找一个文件中的某个部分,而且支持按字符方式和按块方式读写。
bonnie
sysbench
网络测试
iperf
Iperf是一个常用的网络性能测试工具,它是用C++编写的跨平台的开源软件,可以在Linux、UNIX和Windows系统上运行,其项目主页是:http://sourceforge.net/projects/iperf。
Iperf支持TCP和UDP的数据流模式的测试,用于衡量其吞吐量。与Netperf类似,Iperf也实现了客户机/服务器模式,Iperf有一个客户端和一个服务端,可以测量两端的单向和双向数据吞吐量。当使用TCP功能时,Iperf测量有效载荷的吞吐带宽;当使用UDP功能时,Iperf允许用户自定义数据包大小,并最终提供一个数据包吞吐量值和丢包值。另外,有一个项目叫Iperf3(项目主页为http://code.google.com/p/iperf),它完全重新实现了Iperf,其目的是使用更小、更简单的源代码来实现相同的功能,同时也开发了可用于其他程序的一个函数库。
netperf
Netperf是由HP公司开发的一个网络性能基准测试工具,它是非常流行网络性能测试工具,其官方主页是http://www.netperf.org/netperf。
netio
netio也是个跨平台的、源代码公开的网络性能测试工具,它支持UNIX、Linux和Windows平台,其作者关于NETIO的主页是:http://www.ars.de/ars/ars.nsf/docs/netio。NETIO也是基于客户机/服务器的架构,它可以使用不同大小的数据报文来测试TCP和UDP网络连接的吞吐量。
SCP
SCP是Linux系统上最常用的远程文件复制程序,它可以作为实际的应用来测试网络传输的效率。用SCP远程传输同等大小的一个文件,根据其花费时间的长短可以粗略评估出网络性能的好坏。