接前一篇文章:软考 系统架构设计师系列知识点之系统性能(2)
所属章节:
第2章. 计算机系统基础知识
第9节. 系统性能
系统性能是一个系统提供给用户的所有性能指标的集合。它既包括硬件性能(如处理器主频、存储器容量、通信带宽等)和软件性能(如上下文切换、延迟、执行时间等),也包括部件性能指标和综合性能指标。系统性能包含性能指标、性能计算、性能设计和性能评估4个方面的内容。
2.9.4 性能评估
性能评估是为了一个目的,按照一定的步骤,选用一定的度量项目,通过建模和实验,对一个系统的性能进行各项检测,对测试结果做出解释,并形成一份文档的技术。性能评估的一个目的是为性能的优化提供参考。
1. 基准测试程序
大多数情况下,为测试新系统的性能,用户必须依靠评价程序来评价机器的性能。下面列出了4种评价程序,它们评测的准确程度依次递减:真实的程序、核心程序、小型基准程序和合成基准程序。即:
真实的程序 > 核心程序 > 小型基准程序 > 合成基准程序
把应用程序中用得最多、最频繁的那部分核心程序作为评价计算机性能的标准程序,称为基准测试程序(benchmark)。基准程序是目前一致承认的测试系统性能的较好方法。
基准测试程序有整数测试程序Dhystone、浮点测试程序Linpack、Whetstone基准测试程序、SPEC基准测试程序和TPC基准测试程序。
这一段实际上系统分析师的教材中也有,而且更为细致。参见:
软考 系统分析师系列知识点之系统性能评估(4)
1. Dhrystone程序
Dhrystone是一个综合性的整数基准测试程序,它是为了测试编译器和CPU处理整数指令和控制功能的有效性,人为地选择一些典型指令综合起来形成的测试程序。Dhrystone基准程序用100条C语言语句(包括各种赋值语句、各种数据类型和数据区、各种控制语句、过程调用和参数传送、整数运算和逻辑操作)编写而成,这种基准程序当今很少使用。
2. Linpack基准程序
Linpack是国际上最流行的用于测试高性能计算机系统浮点性能的测试。Linpack基准程序是一个用Fortran语言写成的子程序软件包,称为基本线性代数子程序包,此程序完成的主要操作是浮点加法和浮点乘法操作。测量计算机系统的Linpack性能时,让机器运行Linpack程序,测量运行时间,将结果用MFLOPS表示。
Linpack通过对高性能计算机采用高斯消元法求解一元n次稠密线性方程组的测试,评价高性能计算机的浮点性能。Linpack测试包括三类:Linpack100、Linpack1000和高性能Linpack(High Performance Linpack,HPL)。
- Linpack100
Linpack100求解规模为100阶的稠密线性方程组,它只允许采用编译优化选项进行优化,不得更改代码,甚至代码中的注释也不得更改。
- Linpack1000
Linpack1000要求求解规模为1000阶的线性代数方程组,达到指定的精度要求,可以在不改变计算量的前提下做算法和代码上的优化。
- HPL
HPL也称为高度并行计算基准测试,它对线性代数方程的阶数n没有限制,即求解问题的规模可以改变,除基本算法(计算量)不可改变外,可以采用其它任何优化方法。
前两种测试运行规模较小,已不是很适合现代计算机的发展。
3. Whetstone基准程序
Whetstone是用Fortran语言编写的综合性测试程序,主要由执行浮点运算、功能调用、数组变址、条件转移和超越函数的程序组成。Whetstone的测试结果用Kwips表示,1 Kwips表示机器每秒钟能执行1000条Whetstone指令。这种基准程序当今已经很少使用。
4. SPEC
系统性能评估机构(System Performance Evaluation Cooperative,SPEC)基准程序对计算机系统性能的测试有两种方法:一种是测试计算机完成单项任务有多快,称为速度测试;另一种是测试计算机在一定时间内能完成多少项任务,称为吞吐率测试。SPEC的两种测试方法又分为基本的和非基本的两类。基本的是指在编译程序的过程中严格限制所用的优化选项;非基本的是可以使用不同的编译器和编译选项以得到最好的性能,这就使得测试结果的可比性降低。
SPEC基准程序测试结果一般以SPECmark(SPEC分数)、SPECint(SPEC整数)和SPECfp(SPEC浮点数)等形式来表示,测定指标越高,则代表性能越好。SPEC还有针对多CPU系统的两组测试程序,称为SPECrate,用于衡量多处理器系统在整数处理(SPECint_rate)和浮点数处理(SPECfp_rate)方面的总体吞吐能力。
SPEC原来主要是测试CPU性能的,现在强调开发能反映真实应用(例如,实际负载等)的基准测试程序,并已推广至多层结构计算、商业应用、I/O子系统等。例如,SPECjbb是一套Java基准测试程序,用于测试Java服务器性能;SPECweb用于评测Web服务器能够支持的最大连接数的基准测试。
要注意的是,SPEC的指标是随着计算机硬件水平的提高和应用要求的改变而不断更新的,每隔几年都会公布新的基准测试程序。
5. TPC
事务处理委员会(Transaction Processing Council,TPC)基准程序用以评测计算机在事务处理、数据库处理、企业管理与决策支持系统等方面的性能。该基准程序的评测结果用每秒完成的事物处理数TPC来表示。
- TPC-A基准程序规范用于评价在OLTP环境下的数据库和硬件的性能,不同系统之间用性能/价格比进行比较;
- TPC-B测试的是不包括网络的纯事务处理量,用于模拟企业计算环境;
- TPC-C测试的是联机订货系统;
- TPC-D、TPC-H和TPC-R测试的都是决策支持系统,其中TPC-R允许有附加的优化选项;
- TPC-E测试的是大型企业信息服务系统;
- TPC-W是基于Web应用的基准程序,用来测试一些通过Internet进行市场服务和销售的商业行为,因此TPC-W可以看作是一个服务器的测试标准。
2. Web服务器的性能评估
在Web服务器的测试中,反映其性能的指标主要有:最大并发连接数、响应延迟和吞吐量等。
常见的Web服务器性能评测方法有基准性能测试、压力测试和可靠性测试。
3. 系统监视
进行系统监视的方法通常有三种方式:一是通过系统本身提供的命令,如Unix/Linux中的ps、last,Windows中的netstat等;二是通过系统记录文件,查阅系统在特定时间内的运行状态;三是集成命令、文件记录和可视化技术,如Windows的Perform应用程序。
至此,“2.9.4 性能评估”的全部内容就讲解完了。“2.9 系统性能”的全部内容也就讲解完了。