Linux操作系统性能评测与测试指标浅析
性能测试是对一个操作系统运行效率进行评价的关键环节。我们采用适当的性能测试工具集,在保证工具正确运行和基准软硬件测试环境一致的前提下,运行性能测试工具,对测试数据进行收集和处理分析,依照判断标准得出对被测性能指标的评价,从而对Linux操作系统的整体性能做出综合评价。论文联盟http://www.LWlM.cOm
一、性能测试策略
Linux操作系统性能测试的主要目的包括评估系统的综合能力、验证可靠性、识别系统中强弱点、为系统调优提供依据等。在实施Linux操作系统性能测试和评测时,应注意遵循如下策略:
(1)所有被测操作系统应运行于相同的硬件平台和网络条件下,使用同样的性能测试工具,保证测试环境的一致。(2)性能测试应在稳定的测试环境下运行,保证测试期间系统不受干扰。(3)被测操作系统应处于一定的CPU、I/O、Memory压力负荷下,一方面验证系统在高负载下的表现,另一方面可以得到差距较明显的数据。(4)为了得到准确有效的测试数据,通常采取自动运行3~5组测试,去除特殊值后取平均值的取值方法。(5)测试指标应包括系统执行特定任务的能力,执行特定任务的耗时,执行特定任务的CPU利用率和资源占用状况等。(6)性能测试通常没有一定的Pass/Fail标准,而是通过分析多个操作系统中的运行数据,进行各项指标的综合对比。(7)对操作系统性能的评测需从处理能力、吞吐率(单位时间内处理的信息量)、响应能力(响应时间、周转时间和排队时间等)、资源利用率等方面进行综合对比。(8)对不同指标的重要程度的评价应以操作系统拟运行的应用类型和硬件资源、生产环境条件为基准做出判定。
二、性能测试工具的选择
性能测试过程中,通常会利用一些自动化工具。在Linux操作系统性能测试工具的选择方面,把握了以下几方面的原则:
(1)针对linux操作系统,具有权威性和被业界公认。(2)开源软件,具有良好的社区基础,保证持续开发和可维护。(3)满足测试目标和评测需求。(4)稳定、易用、兼容性和扩展性好。
基于以上原则,我们选用Stress工具对操作系统加压,选择Lmbench、Bonnie++、PingPong、NetPerf组成性能测试工具集。下面对各工具进行简单介绍:
Stress。用于给CPU、内存、I/O加压的系统测试工具,使系统在高负载下运行。
Lmbench。Lmbench是一个系统综合性能测试套件,它由Bandwidth基准测试、Latency基准测试、Miscellanious基准测试三类基准测试去衡量操作系统的基本性能。目前,很多Linux操作系统厂商用它来评估自己的产品和与其它Linux产品,进行性能对比分析。
bonnie++。Bonnie++是一个磁盘I/O基准测试套件,主要用于磁盘和文件系统的性能测试。它可以测试文件的创建、读、写和删除等操作,既可以测试小文件,也可以测试大的单个文件。很多硬件和软件厂商用它测试其产品的I/O性能,是一个被广泛应用的工具。
Pingpong。Pingpong是一个Linux线程性能的测试工具,它通过在两个MPI节点之间pingpong消息的进行测试。linux操作系统厂商通常用它来评估系统的线程性能。
Netperf。Netperf是一个网络性能的测量工具,主要针对基于TCP或UDP的传输。根据应用的不同,Netperf可以进行不同模式的网络性能测试。Netperf测试结果所反映的是一个系统能够以多快的速度向另外一个系统发送数据,以及另外一个系统能够以多快的速度接收数据。
三、性能测试指标分析
(一)内核性能测试
对于Linux操作系统,内核是最核心的部分,内核的性能直接决定了操作系统的性能。内核性能测试的方法是针对Linux内核五大子系统:进程调度子系统、内存管理子系统、虚拟文件子系统、进程通信子系统和网络子系统的特点,测量出Linux内核完成工作量负载的响应时间、CPU时间和CPU利用率等参数,作为衡量标准。
使用lmbench测试套件对Linux操作系统内核的综合性能指标进行测试。具体的测试指标与判断标准如下:
表1 lmbench测试指标
测试指标 测试项和测试内容 判断标准
系统基本参数 Tlb pages、Cache line bytes、Mem par、并行的lmbench数 符合实际系统基本参数值
处理器处理时间:
即进程在CPU中的执行时间。 简单系统调用,执行getppid()
简单IO操作
取文件状态的执行时间
打开然后关闭一个文件的时间
Select设置
信号处理初始化
捕获&处理信号
Fork()进程后直接退出
Fork()后执行execve()调用再退出
Fork()后执行shell再退出 以时间为单位
数值越小越好
数值运算 基本整型数、64位整型数、基本浮点数和双精度数操作。 以时间为单位
数值越小越好
上下文切换 测试多个p/k条件组合下的并行数据处理能力,如2p/16K表示2个并行处理16K大小的数据。
测试组合包括2p/0k,2p/16k.8p/16k,16p/64k等 以时间为单位
数值越小越好
本地通信响应时间 通过不同通信方式发送自己后立刻读。
通信方式覆盖:Pipe,UDP,RPC/UDP,TCP,RPC/TCP等 以时间为单位
数值越小越好
文件和虚拟内存系统响应时间 包括:不同大小文件的创建/删除,内存映射的开销,捕获保护性错误,页面错误发生,对100个文件描述符进行select() 以时间为单位
数值越小越好
本地通信响应带宽 包括:Pipe管道操作,TCP,文件重复读,内存映射重复读,内存拷贝,内存读写 以MB/s为单位
数值越大越好
内存操作响应时间 包括:L1/L2缓存,连续内存访问,随机内存访问 以时间为单位
数值越小越好
(二)I/O性能测试
测试指标:磁盘与文件系统I/O性能
测试项和测试内容:顺序写入、顺序读取、读写测试、顺序创建/读取/删除、随机创建/读取/删除。
判断标准:每秒处理KB的数量,以K/sec为单位,数值越大越好;CPU利用率,以%/CPU为单位,数值越小越好;每秒处理操作的数量,以/sec为单位,数值越大越好。
(三)线程性能测试
测试指标:测量系统线程性能。
测试项和测试内容:在两个MPI节点之间创建若干成对线程,通过竞争互斥锁动作进行模拟。模拟多种数值线程,如64、128、256线程。
判断标准:分析创建线程和完成比赛总共消耗的时间,数值越小越好。
(四)网络性能测试
测试指标:操作系统的网络性能。
测试项和测试内容:单个TCP连接的批量数据传输模式、单个TCP连接的请求/应答模式、多个TCP连接的请求/应答模式、UDP连接的批量数据传输模式、UDP连接的请求/应答模式。
判断标准:每秒的数据传输率,越大越好。
四、小结
本文总结了对Linux操作系统进行性能测试和性能评测的策略,介绍了实际测试中选择的工具,给出了对内核、I/O、线程、网络几个方面的测试指标和评价标准,对实施Linux操作系统性能测试和进行对比评测具有实践的指导意义。文中的方法和指标能够从综合层面上反映一个Linux操作系统的性能。然而,Linux操作系统性能测试和性能评测是一个复杂和庞大的系统工程,针对运行在操作系统上的不同的业务、应用和服务类型,又会关注不同的性能指标,选择更有针对性的工具。因此,在实际测试中,因根据具体的测试需求和测试目的,策划和实施性能测试。
参考文献:
[1]肖鹏.Linux桌面操作系统性能评测[D].吉林:吉林大学,2005
[2]Michal Piotrowski.Linux Kernel Tester's Guide[EB/OL].http://wenku.baidu.com/view/131fac956bec0975f465e258.html,2010
[3]师劲松,刘爱芳.Linux操作系统性能评价方法[J].微型电脑应用,2001
[4]任桥伟.Linux内核修炼之道[M].北京:人民邮电出版社,2010
[5]冯国富,魏恒义,储鹰,董小社.支持多种Linux版本的动态内核性能测试技术[J].西安交通大学学报,2008