Linux性能测试一、测试计划1.查找性能测试工具2.确定测试工具并对其进行安装、运行3.对运行结果进行分析4.对此测试工具未覆盖到的性能方面,查找其他工具5.继续分析工具测试内容6.编写测试报告二、C GL性能要求—实时处理Linux实时系统最重要的特点就是实时性,即系统的正确性不仅仅依赖于计算的逻辑结果的正确性,还取决于输出结果时间的及时性。
从这个角度看,实时系统是“一个能够在指定或者确定的时间内完成系统功能和对外部环境做出响应的系统”。
按对实时性能要求的程度,实时系统可分为两类:(1) 硬实时系统:要求可确定性强,具有明确的实时约束,在某个限定的时刻之前不能完成任务将造成灾难性的后果。
(2) 软实时系统:也对时间敏感,但偶尔发生不能满足严格实时要求的情况也是允许的。
Lmbench是测试Linux系统性能的实用程序集,会产生详细的结果并提供工具来处理它们。
它包括一系列微型的基准,可以测量一些基本的操作系统和硬件指标:* 文件的读取和概括* 读、写和复制时的内存带宽* 通过管道复制数据* 通过Unix套接字复制数据* 通过TCP/ IP套接字读取数据三、L mbench套件介绍(一)原理和特色Lmbench 是一套简易可移植的,符合ANSI/C 标准为UNIX/POSIX 而制定的微型测评工具。
它主要测试部分包括文件读写、内存操作、进程创建销毁开销、网络等性能。
主要思路是在不同的存储区域之间移动数据,用以考核系统的性能。
其测试的主要包括:带宽(Bandwidth benchmarks)和延时(Latency benchmarks)。
(二)测试过程使用Linux性能测试套件Lmbench的步骤:1.到Lmbench官方网站上下载LMbench version 3.网址:/lmbench/get_lmbench.html2.解压文件并查看目录内容lmbench3/results内容。
3.修改只读文件lmbench3/src/Makefile修改该文件的第231行,避免在使用命令make的时候出错。
4.配置lmbench编译成功的话,就会出现一些选择提示以对测试进行配置并生成配置脚本。
后续的测试将使用该配置脚本,在以后测试中也能够直接使用同样的配置多次测试。
配置提示除了测试的内存范围(“MB [default 1792]”时,对内存较大的应该避免选择太大值,否则测试时间会很长)和是否Mail results 外,基本上都能够选择缺省值。
5.查看结果解释:此项是性能基本参数,其中Tlb pages是TLB(Translation Lookaside Buffer)的页面数,Cache line bytes为总线宽度,Scal load:并行的lmbench数。
解释:此项显示处理器、进程的操作时间。
Null call:简单系统调用(取进程号)。
Null I/O:简单IO操作(空读写的平均)。
Stat 取文档状态的操作。
Sig hndl:捕获处理信号。
Fork proc:Fork进程后直接退出。
Exec proc:Fork后执行execve调用再退出:Sh proc //Fork后执行shell 再退出。
解释:此项显示上下文切换的相关记录。
2p/16K表示2个并行处理16K大小的数据。
解释:本地通信传输延时,通过不同通信方式发送后自己立即读。
Pipe:管道通信。
TCP conn :TCP建立connect并关闭描述字。
解释:此项显示的是文件和虚拟系统传输延时。
File Create & Delete:创建并删除文档。
MMap Latency:内存映射。
100fd selct:对100个文档描述符配置select的时间。
解释:本地通信带宽。
TCP //TCP通信。
File reread:文档重复读。
MMap reread:内存映射重复读。
Mem read:内存读。
Mem write:内存写解释:内存操作延时(单位:毫秒)。
L1:缓存1。
L2:缓存2。
Main Mem。
连续内存。
Rand Mem:存随机访问延时。
6.在Makefile目录下生成文件,记录本次测试的详细结果。
Lmbench 根据配置文档执行测试项之后,在results目录下会根据系统类型、系统名和操作系统类型等生成一个子目录,测试结果文档(system name+序号)就存放于该目录下。
测试完毕执行make see 可查看到测试结果报告及其说明。
总结:Lmbench是一套微基准,可以用来分析不同操作系统的设定。
包括Lmbench在内的基准可以度量多种操作系统的例行程序,如上下文转换、本地通讯、内存带宽和文件操作。
Lmbench 使用很简单,只需要知道三个重要的命令。
✧make results:首次运行Lmbench时,它会提示系统配置的一些详细信息和哪些测试会被执行。
✧make rerun:在初始化配置并完成首次运行基准后,使用make rerun命令可以重复基准使用由make results提供的配置。
make see:在运行最少三次后,可以使用make see命令查看结果。
显示的结果可以被复制到制表软件用于后续分析或图形化展示。
四、使用其他工具测试Linux性能1.vmstat:监视内存vmstat命令可对操作系统的命令报告关于内核线程、虚拟内存、磁盘、陷阱和CPU 活动的统计信息进行监视。
如加上-s参数会显示系统初始化后调页事件的绝对计数:解释:其中,r:运行队列中的进程数,在一个稳定的工作量下应该少于5。
而b表示等待队列中的进程数(等待I/O),通常情况下是接近0的。
bi表示向一个块设备输出的块数量。
in:每秒发生的中断数量,包括时钟。
cs:每秒发生的context switches的数量。
us:非内核代码运行的时间(用户时间,包括nice时间)。
sy:内核代码运行的时间(系统时间)。
Wa显示的是等待I/O操作的时间。
1)显示详细的内核内存利用率2)显示内存页面信息,包括活跃和不活跃的内存页面3)将总数结构中的内容写入到标准输出,该结构包含从系统初始化后调页事件的绝对计数。
2.isostat:监视系统输入/输出设备负载iostat的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。
它报告CPU统计信息和整个系统、适配器、tty 设备、磁盘和CD-ROM 的输入/输出统计信息。
解释:rrqm/s、wrqm/s:每秒进行merge 的读/写操作数目。
r/s、w/s:每秒完成的读/写I/O 设备次数。
avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。
avgqu-sz:平均I/O队列长度。
Await:平均每次设备I/O操作的等待时间(毫秒)。
Svctm:平均每次设备I/O操作的服务时间(毫秒)。
其中,svctm 一般要小于await (因为同时等待的请求的等待时间被重复计算了),svctm 的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致svctm 的增加。
await 的大小一般取决于服务时间(svctm) 以及I/O 队列的长度和I/O 请求的发出模式。
如果svctm 比较接近await,说明I/O 几乎没有等待时间;如果await 远大于svctm,说明I/O 队列太长,应用得到的响应时间变慢。
如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核elevator 算法,优化应用,或者升级CPU。
队列长度(avgqu-sz)也可作为衡量系统I/O 负荷的指标,但由于avgqu-sz 是按照单位时间的平均值,所以不能反映瞬间的I/O。
如果%util 接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
3.使用sar进行综合查看sar命令是系统维护的重要工具,主要帮助我们掌握系统资源的使用情况,特别是内存和CPU 的使用情况。
它的特点是可以连续对系统取样,获得大量的取样数据。
sar是目前Linux 上最为全面的系统性能分析工具之一,可以从14个大方面对系统的活动进行报告,包括文件的读写情况、系统调用的使用情况、串口、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
1)使用命令行sar –n –o result 5 2。
每5秒采样一次,连续采样2次,采样结果以二进形式存入当前目录下的文件result中。
在显示内容包括:%usr:CPU处在用户模式下的时间百分比。
%sys:CPU处在系统模式下的时间百分比。
%wio:CPU等待输入输出完成时间的百分比。
%idle:CPU空闲时间百分比。
其中,%wio的值过高,表示硬盘存在I/O瓶颈。
%idle值高,表示CPU较空闲,如果%idle 值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。
%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
2)使用命令行sar -v 5 2。
观察核心表的状态。
3)使用命令行sar -v报告系统表的内容。
其中:file-sz:目前核心中正在使用或分配的文件表的表项数。
inod-sz:目前核心中正在使用或分配的i节点表的表项数。