所谓计算机的性能(Performance)通常是指计算机的速度,它是程序执行时间的倒数。而程序执行时间是指用户向计算机送入一个任务后,直到获得他需要的结果这一段等待时间。
包括:
1.访问磁盘和访问存储器的时间
2.CPU 运算时间
3.I/O 动作时间
4.操作系统的开销时间等。
1.操作系统的性能直接影响了其上应用系统的性能
2.性能评估结果是用户在操作系统选购过程中的重要参考指标
3.为开发者优化操作系统的性能提供指导
4.为操作系统的评测提供依据
1.应用千差万别
2.测试点过多
3.依赖多种因素和特征
4.没有针对性
5.没有实际应用前景
1.机器级的性能评测
机器级的性能评测,包括 CPU 和存储器的某些基本性能指标,计算机的可用性与有效性以及机器成本、价格与性/价比等,它是引进和购买计算机时最主要的选择依据。
2.算法级的性能评测
算法级的性能评测方法主要用于并行机评测,最初大都是为了评价并行算法的性能提出的,后来这些评测方法也被推广到并行程序上。
3.程序级的性能评测
程序级的性能评测主要是使用一组基准测试程序(Benchmark)测试和评价计算机系统的各种性能。
1.真实程序
通过运行实际应用程序, 例如 C 语言的各种编译程序、 Tex 文本处理软件、 CAD 设计工具 Spice等
2.核心程序
它是从实际程序中抽取少量但很关键的代码段,并以此来评估程序性能
3.小测试程序
这些测试程序的代码长度一般在100行之内,用户可以根据自己的目的随时编写一些小段程序,并按已预知的输出结果(如皇后问题、排序问题、求素数等)来判断机器的性能。
4.综合测试程序
它是首先对大量的应用程序中的操作进行统计,得到各种操作比例,再以此比例人为制造出测试程序。
基准测试程序用于测试和预测计算机系统的性能, 揭示不同结构机器的长处和短处,为用户决定购买或使用哪种机器最适合他们的应用要求提供决策。基准测试程序试图提供一个客观、公正的评价机器性能的标准。
宏观微观:
宏观基准测试程序(Macro-benchmark)和微观基准测试程序(Micro-benchmark)两大类。 前者将计算机系统作为一个整体来测试其性能,它相对于某一应用类来比较不同的计算机系统,所以对机器买主很有用,但它不能揭示计算机系统性能好、坏的原因。后者是测试机器的某一特定方面的性质,如CPU速度、存储器速度、I/O速度、OS性能、网络特性等。
应用类别:
定点性能
浮点性能
Web服务性能
数据处理性能
系统软件性能
科学与工程计算性能
6.3 主要的基准测试工具
LMBENCH
是由SGI的Larry McVoy所维护,是一种用于测试不同 Unix 平台上 OS 开销以及处理器、高速缓存、主存、网络和磁盘之间数据传输能力的可移植的基准测试程序。
Whetstone
比较不同的计算机的浮点性能而设计的综合性基准测试程序。LMbench 着重测量以下内核组件:调度程序、进程管理、通信、联网、内存映射和文件系统。
Dhrystone
主要为测试整数与逻辑运算性能而设计的综合型基准测试程序Whetstone,Dhrystone不能预测用户程序性能,这些基准程序的主要缺点是对编译程序比较敏感。
LinPACK
测试的基准是用全精度64位字长的子程序求解100阶线性方程组的速度,测试的结果以Mflops(每秒百万次浮点运算)作单位给出。
SPEC
原主要是测试CPU性能的,现在强调开发能反映真实应用(如实际负载等)的基准测试程序,并已推广至客户/服务器计算、商业应用、I/O子系统等。
Unixbench
应用比较广泛的Unix类操作系统性能测试工具之一,它属于微观基准测试程序,它主要从CPU浮点运算能力,以不同缓冲区大小拷贝不同大小文件,管道吞吐量,进程生成速度,系统调用开销等方面来测试Linux相关性能。
Xbench
主要测试 xwindow 图形界面的性能。
IOzone
文件系统的评测工具,对Read,write,re-read,re-write,read backwards,read
strided,fread,fwrite,random read,pread,mmap,aio-read,aio_write 等一系列文件I/O性能进行了评测,是十分有用的文件系统性能分析工具。
Ltp
最大的 Linux 性能测试团体 Linux test project 开展的开源测试项目, 这个团体专门从事 Linux 性能测试研究。 这个项目收集了各种 Linux 内核测试工具和相关资料, 它的目标就是为了通过把自动化测试引入到 Linux 内核测试以提高Linux 内核性能。
6.4 现状和不足
Linux 基准测试程序都是微观基准测试程序,都是在测试机器的某一特定方面的性质,分别着重于 CPU 速度、存储器速度、I/O 速度、网络特性等等某一方面或多个方面,偏重于硬件。把 Linux 操作系统作为一个整体,针对 Linux 的操作系统性能的宏观基准测试程序目前还没有。
现有的Linux测试工具都是基于微观基准测试程序,对于操作系统而言微观可测点实在是太多,写一个全面的基于自顶向下三层的全面测试工具工作量大,并且也没有太大实用价值。毕竟应用是千差万别的,不利于在有限的时间内快速的得出 Linux 版本性能优劣结论。
如何进行性能评测,一般一个性能评测的实际解决方案应该包括以下三个方面:
1.让被评测系统处于压力负荷下;
2.测量系统执行有效特定任务的能力,执行特定任务的耗时,执行特定任务的 CPU 利用率;
3.基于性价比考虑进行改进。进行性能评测分析的目的是为了帮助开发人员更好更深层次的理解系统, 找出系统瓶颈,并作出相应的改进。
1.分析技术(modeling)
分析技术也叫建模分析,在一定假设条件下,计算机系统参数与性能指标参数之间存在着某种函数关系,按其工作负载的驱动条件列出方程,用数学方法求解。
2.模拟技术(simulation)
模拟技术按被评价系统的运行特性建立系统模型; 按系统可能有的工作负载特性建立工作负载模型;语言编写模拟程序,模仿被评价系统的运行;设计模拟实验,依照评价目标,选择与目标有关因素,得出实验值,再进行统计、分析。该技术的特点是可应用于设计中或实际应用中的系统,可与分析技术相结合,构成一个混合系统。
3.测量技术(measurement)
测量技术只能对已投入使用的系统进行测量, 通常采用不同层次的基准测试。
工作量就是模拟实际工作的工作任务,一个工作量它要产生针对该被评测系统实际工作应用的典型的工作任务,并且该工作任务应该对系统产生相应的压力负荷 ,一个好的性能评测工作量应该包括以下基本特征。
可测量性
可反复性
不变性
典型性
1.系统层(System Level):包括处理器、内存、硬盘、网络等;(硬件资源)
2.应用层(Appalication Level):包括锁、线程、堆、API 等;(程序资源)1
3.微结构层(Micro-Achitecture):包括数据队列、循环结构、cache 优化等。
1.响应时间(Elapsed Time)
内核完成某一任务(程序)所花费的时间,如磁盘访问、存储器访问、输入/
输出等待。
2.CPU 时间
程序在CPU中的执行时间。以秒为单位。
3.CPU 利用率
提供一个统一的、客观的、公正的和可相互比较的评价计算机的标准。
1.权威性
不是自己凭空想象,要有可靠的理论及事实依据支撑,业界广泛认可。
2.系统化
不是现有benchmark和工具的简单组合,而是能够系统化评估整机性能的方案。
它能够反映出整个计算机软件及硬件的综合处理能力,而不单纯是软件或者硬件,也就是说同一个硬件平台上测试,能够反映出不同操作系统性能不同,且在同一个操作系统,在不同的硬件平台上,性能测试也应该有所不同。
3.全面性
是对整机的整体性能测试,不是单纯的某个硬件或者某一方面能力的测试。
4.实用
要求该方法有实用价值,参考意义。
5.公正性
不一某些利益为目的的。
从微观基准理论的角度来看,操作系统的基本性能参数实在是太多,基本性能参数测试包括 CPU、内存、I/O、网络、操作系统、文件系统、编译器、数据库的性能指标。
从宏观基准测试理论出发就简单多了, 主要是要确定合适的工作量来模拟有代表性的用户作业。工作量的确定需要一定的理论依据,可以借鉴现有各种Linux 测试工具实践结果。
Linux 桌面操作系统是近几年来基于 Linux 内核发展起来的面向用户桌面应用的操作系统,内核还是基于 Linux,只是在其上添加了很多窗口程序,并且在用户界面和友好度上作出了很大的改进,更加易用和实用。
测试 Linux 性能的关健在于测试 Linux 内核性能,而测试 Linux内核性能又可以细化成五大子系统的测试。可以针对内核这五大子系统设计工作量负载。
该文章主要是对Linux桌面操作系统性能评测-作者-肖鹏 的学习总结和归纳,感兴趣的可以参考这篇学术论文
原文地址:http://blog.csdn.net/fengjingge/article/details/42711993