(计算机应用技术专业论文)基于分治和参数化的队列网络模型系统的性能优化.pdf_第1页
(计算机应用技术专业论文)基于分治和参数化的队列网络模型系统的性能优化.pdf_第2页
(计算机应用技术专业论文)基于分治和参数化的队列网络模型系统的性能优化.pdf_第3页
(计算机应用技术专业论文)基于分治和参数化的队列网络模型系统的性能优化.pdf_第4页
(计算机应用技术专业论文)基于分治和参数化的队列网络模型系统的性能优化.pdf_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江大学硕士学位论文 摘要 随着计算机技术的飞速发展,计算机系统的性能越来越成为计算机系统成 功的关键性因素,这一方向的研究成为了计算机领域的热点之一,计算机性能 工程也发展成为了一个为解决计算机系统性能问题的专门学科,很多学者都在 这一领域进行了大量的研究工作,提出了很多保证计算机系统性能的理论和方 法,并且很多已经成功地应用于实践中。 计算机性能优化作为计算机性能工程中重要环节,对计算机性能的提高起 到了很重要的作用。计算机性能优化可以分为两个大的领域:提高硬件速度和 提高软件性能。本文关注于通过改善软件的效率来提高计算机系统的性能,在 已有对提高软件性能方法研究的基础上,提出了基于分治和参数化方法的对于 队列网络模型的系统性能改善优化过程。 为了评估该方案的有效性和适用性,本文把该性能优化过程应用于一个实 际的队列网络模型系统:金融消息传输系统。随着业务量的迅速扩展,该系统 正在面临着日益严重的性能问题,需要及时解决以支持将来的业务需要。在对 该系统的优化过程中,结合了分治策略自底向上地对系统进行逐步的性能改善, 并且采用了参数化这一方式来定义各个组件的性能,通过对各种参数的调优和 组合优化来找到系统性能优化的可能方案。最后,通过对测试结果的详细分析 和验证,给出了对该系统进行优化的最终方案,解决了系统的性能问题。 关键词:软件性能工程,软件性能优化,队列网络模型,分治,参数化 塑兰查兰堡主兰竺笙兰垒竺 a b s t r a c t w i t ht h ed e v e l o p m e n to f c o m p u t e rt e c h n o l o g y , p e r f o r m a n c ei sb e c o m i n ge s s e n t i a lt o t h es u c c e s so fac o m p u t e rs y s t e m ,a n di ti so n eo ft h eh o tt o p i c si nt h ea r e ao f c o m p u t e rs c i e n c e m a n yr e s e a r c h e r sa n de n g i n e e r sh a v eb e e ne x p l o r i n gs o l u t i o n st o t h e p e r f o r m a n c eo fc o m p u t e rs y s t e m ,a n d v a r i o u sp e r f o r m a n c ei m p r o v e m e n t m e t h o d sh a v eb e e ns t u d i e da n da p p l i e di nt h es y s t e m s a sa l li m p o r t a n tp a r to fs o f t w a r ep e r f o r m a n c ee n g i n e e r i n g , s o f t w a r ep e r f o r m a n c e t u n i n gp l a y sak e yr o l e i n i m p r o v i n gt h ep e r f o r m a n c eo fc o m p u t e rs y s t e m s b a s i c a l l y , p e r f o r m a n c et u n i n gc o n s i s t so ft w oa r e a s :u p g r a d i n gt h eh a r d w a r ea n d i m p r o v i n gt h es o f t w a r ep e r f o r m a n c e t h i st h e s i sf o c u s e so i lt h ea r e ao fi m p r o v i n g t h ec o m p u t e rs y s t e mp e r f o r m a n c eb ye n h a n c i n gt h es o f t w a r ee f f i c i e n c y b a s e do n t h ee x i s t i n gs t u d i e sa n dt h e o r i e so fs o r w a r ep e r f o r m a n c et u n i n g ,i te x p l o r e sa c o m m o np r o c e s st ot u n et h ep e r f o r m a n c eo fq u e u en e t w o r km o d e l l i k es y s t e m 。i n w h i c hd i v i s i o na n dp a r a m e t e r i z a t i o na r eu s e da st h ek e ym e a n s t oe v a l u a t et h ee f f e c t i v e n e s sa n da p p l i c a b i l i t y , t h ep e r f o r m a n c et u n i n gp r o c e s si s a p p l i e dt oa l la c t u a lq u e u en e t w o r k m o d e lb a s e ds y s t e m :f i n a n c i a lm e s s a g e sd e l i v e r y s y s t e m a st h eb u s i n e s sg r o w s , t h i ss y s t e m i sf a c e dw i t hm o r ea n dm o r e p e r f o r m a n c ei s s u e sw h i c hn e e dt ob es o l v e d s oa s t os u p p o r tt h ec o n t i n u o u s l y g r o w i n gb u s i n e s s w i t h i nt h ep r o c e s so f p e r f o r m a n c et u n i n g ,t h ed i v i s i o ns t r a t e g yi s u s e dt oi m p r o v et h ew h o l es y s t e mp e r f o r m a n c es t e pb ys t e pa n df r o mb o t t o mt ot o p a n dd u r i n gt h ep e r f o r m a n c et e s t i n g ,t h ep a r a m e t e r i z a t i o nm e t h o di su s e dt od e f i n e t h es y s t e mp e r f o r m a n c ew h i c hc o u l db ea d j u s t e da n dc o m b i n e dt of i n do u tt h eb e s t p a r a m e t e rc o n f i g u r a t i o nt h a te n s u r e st h eb e s ts y s t e mp e r f o r m a n c e f i n a l l y , w i t ha t h o r o u g hr e s u l ta n a l y s i sa n dv a l i d a t i o n ,t h i st h e s i sb r i n g sf o r t hf e a s i b l es o l u t i o n st o i m p r o v et h es y s t e mp e r f o r m a n c ea n dt oa c h i e v et h ep e r f o r m a n c eo b j e c t i v e s k e y w o r d s :s o f t w a r ep e r f o r m a n c ee n g i n e e r i n g ,s o f t w a r ep e r f o r m a n c et u n i n g , q u e u i n gn e t w o r km o d e l ,d i v i s i o n ,p a r a m e t e r i z a t i o n 一一 新征大学硕士学位论文 圈目录 图目录 图2 1 软件响应时间= c 1 + n l + a 1 + n 2 卅也+ n 3 + a 3 + n 4 + c 2 5 图2 - 2 并发性对于系统吞吐率的影响8 图2 - 3 性能工程及其相关领域【l 】1 0 图2 - 4 改善软件性能的一般流程1 2 图2 5 时间流模型1 4 图2 6 队列网络模型1 4 图2 - 7m a r k o v 状态图1 5 图2 8 序列图模型。 图2 - 9s i l kp e r f o r m e r 中的软件性能改进过程【引 图2 1 0 响应时间和负载的关系曲线 图3 1 单处理单元队列网络 图3 - 2 多处理单元队列网络 1 5 1 8 2 2 图3 3 吞吐率和请求速率关系 图3 - 4 请求停留时间与请求速率关系 图3 5 请求处理时间与请求速率关系 图3 - 6 队列长度与请求速率关系 图3 7 队列网络模型系统的分拆 图3 8 队列网络模型性能优化过程 图4 - 1 金融消息传输系统 图4 2 金融消息系统的队列网络模型 图4 - 3s y n t h e s i z e r 获取队列中消息的工作方式 图4 - 4f b 发送消息时的排队现象 图4 - 5 每个f u n d 的平均等待时间 5 8 图4 - 6 每条消息的平均等待时间5 8 图4 7 消息的等待时间的方差5 9 图4 8 每秒处理的消息数量5 9 图4 - 9r p c 错误的数量 图4 - 1 0f u n d 的平均等待时间 图4 - l l 消息的平均等待时间6 0 图4 1 2 消息的等待时间的方羞 图4 1 3 每秒处理的消息数量 6 1 图4 1 4r p c 错误的数奄6 1 图4 1 5f u n d 的平均等待时间6 2 图4 1 6 消息的平均等待时间6 2 筋拍刀勰如弘稻 浙珏大学硕士学位论文 圄目录 图4 1 7 消息的平均等待时间方差 图4 - 1 8 每秒处理的消息数量 图4 1 9 r p c 的错误数量 图4 - 2 0 选择最优的内部工作线程数量的测试结果 图4 2 l 消息的平均等待时间 图4 2 2 系统的消息处理速度 图4 2 3r p c 性能 一v l 一 6 3 6 3 6 3 6 5 6 7 6 7 6 7 浙扛大学顼士掌位论文 袭目录 表目录 表2 1 系统响应时间及其用户感受 。6 1 7 2 9 3 5 3 9 4 3 5 2 表2 2s e i 对于软件性能优化的六个关键步骤 表3 1 系统参数与性能关系矩阵 表3 - 2 性能测试场景制定 表3 3 场景与性能指标矩阵示例 表4 1 金融消息传输系统的主要组件 表4 - 2s y n t h e s i z e r 测试的配置参数与所选值 表4 - 3s y n t h e s i z e r 的性能测试场景 表4 4 选择最优内部工作线程数量的测试场景5 3 表4 - 5 在测试环境下重现生产环境性能问题的配置5 5 表4 6 测试场景及其输出结果( 对应表4 - 3 ) 5 7 表4 7 测试场景及其输出结果( 对应表4 - 4 ) 表4 - 8 配置参数对s y n t h e s i z e r 性能的影响 表4 - 9 测试系统的可伸缩性场景 一v i i 一 。5 7 6 4 6 6 浙托大学硕士学位论文 第l 章绪论 第1 章绪论 1 1 软件性能优化的背景 随着计算机系统的复杂化与多样化,整个世界也更加紧密地和计算机,计 算机软件联系在了一起。计算机系统已经成为了各项业务成功的关键因素之一 计算机被应用于人类生产生活的各个方面,起到了不可替代的作用。 随着业务量的扩展,对于计算机系统的要求也越来越高,不仅表现在需要 提供可靠安全的服务,而且计算机系统的性能也越来越受到关注,成为业界讨 论的个热点话题。即便在计算机发展的早期,性能也早已是一个不得不被考 虑的关键因素了。当时,程序所需的空间与使用的程序时间须被非常谨慎的协 调以使之能在小机器上顺利运行。之后,随着硬件不停的更新换代,性能的问 题不但未有消失迹象,反而愈来愈严重了。原因很简单,软件的复杂度与规模 与之前相比也更加不可同日而语。现在的系统不可避免的在面对日渐庞大的客 户量和海量的数据时,承受着极大的风险,这就对性能提出了更高的要求。网 站系统希望能够在提高最大用户访问数量的同时保证有很快的响应时间,后台 数据处理系统希望能够提高数据的吞吐率,所有的这些需求都联系到了“性能” 这个关键词上。 学者们正在不断努力地寻找能够提高计算机系统性能的方法。要提高计算 机系统的性能,有两种基本的方法:升级计算机硬件和提高计算机软件的效率。 升级计算机的硬件是提高系统性能的一个很可靠,也很直接的方法。计算 机硬件发展飞速,经历过几代转变,仍然保持着快速的更新换代的步伐。换一 个更强的服务器,换更快的网络,甚至只要换上好的c p u ,好的内存,好的硬 盘,就能很直观快速的提高计算机系统的整个性能。 同时,人们也不断地在计算机软件方面寻找突破口以提升整个计算机系统 的性能,软件性能工程这一概念也被提了出来。人们已经逐步把计算机性能这 一思想渗透到软件工程的各个环节中,借助一些软件性能测试改进工具,从各 个环节注意软件的性能问题,从而从整体软件层面解决计算机系统的性能阀题。 在当前的时代背景下,计算机系统的性能问题已经成了一个受到普遍关注, 并在很大程度上影响着计算机系统及相应的业务的开展的问题。如何更快,更 好,更高效的解决这一问题,是当前学科研究的一个热点问题。 1 2 软件性能优化的重要性和相关主要工作 对于当今的计算机系统来说,除了基本的业务功能外,性能也成为了系统 一l 一 浙扛大学硕士学位沦文 第1 章绪论 是否能够取得成功的关键性因素之一。以下两个很著名的例子,很好地说明了 计算机系统性能的重要性。 美国国家航空和宇宙航行局曾经因为计算机系统的性能问题面被迫把卫星 的发射计划推迟了八个月。其中主要的原因是作为其花费了数百万美元的核心 软件f l i g h to p e r a t i o n ss e g m e n t ( f o s ) 的性能存在缺陷。由于f o s 这个系统的不 可接受的响应时间,导致发射计划的推迟,其造成的损失至今不可估量。美国 国家航空和宇宙航行局也因此受到了来自各方面的极大的压力。 文献中提到,在亚特兰大奥运会上,i b m 的软件被用做计算每个运动员 的成绩。但是,在该软件运行时,超过1 0 0 0 人次的同时访问使得该系统不堪重 负,直接导致很多比赛项目结果延迟公布,影响了整个奥运会的竞赛日程。i b m 也因为这事件承担了很大的损失。 以上两个例子很直观地告诉了我们计算机系统性能的重要性,纵然有着华 丽的界面,完善的功能和精确的运算结果,当它们都迫于性能压力而无法展现 时,瞬间,都交得那么无足轻重。 摆在我们面前的问题是,怎样才能提高计算机系统的性能呢? 根据著名的摩尔定律,计算机芯片中的晶体管的数量每1 8 个月将翻一番。 这好像告诉我们,计算机硬件的速度永远是高速增长的,我们根本无需担心计 算机系统的性能,因为硬件的发展永远能满足软件复杂性的要求,能够在系统 越来越复杂的今天保证系统同时拥有良好的性能。确实,升级硬件是一个最直 观,且容易实现的快速提高计算机系统性能的方法。而且,有时我们也不得不 这样做,因为某些软件本身就规定了最低的硬件要求,如果不使用好的硬件, 根本无法运行大规模的软件。 但是,对计算机系统的性能来说,我们不能忽视提高软件性能对计算机系 统性能带来的影响。先不论摩尔定律是否依然准确地反应硬件的发展现状,上 面美国国家航空和宇宙航行局和奥运会的例子告诉我们,即使有最好的硬件也 不能保证计算机系统的性能,这也迫使我们从软件这一视角来提高计算机系统 的性能。 首先,大多数计算机系统从软件上存在着很大的改进空间。总体上来说, 可以通过两种方式,一是改进软件中的算法,二是采用新的技术或架构。 其次,提高计算机软件的性能,节省不必要的硬件开支,可以节约计算机 系统开发的成本。从软件需求开始,时刻注意软件的性能问题,在软件开发的 各个阶段,把性能问题作为除了软件功能之外的一个重要问题,这样不会带来 很大的人力成本,但是可以极大的节约甚至避免因为软件性能问题可能导致的 硬件成本的提高。 对于怎样提高计算机软件的性能,学界也给出了各种各样的方法,其统称 一2 一 浙江大学硕士学位论文 第l 章绪论 为软件性能工程( s o f t w a r ep e r f o r m a n c ce n g i n e e r i n g ,s p e ) 。软件的性能工程贯 穿于整个软件工程的各个阶段,可以说对于整个软件性能的改善起到了很大的 作用。我们要做的是怎样去更好的去思考,实践其中的一些理论,把它们运用 到实践中来,并结合实践,以期能最大程度保证整个软件的质量和性能。 而在软件性能工程这一大的领域中,软件性能的优化可以说是一块比较大 的组成部分正如本文开始提出的一样,现在很多软件遇到的问题是,当初整 个软件的设计和实施,都考虑到了当时的需要,而随着业务量和客户的扩展, 这些软件已经不能满足当前的需要,甚至成为了业务发展中的瓶颈。软件的性 能优化关注于怎样找出已有软件中的性能缺陷,并通过一系列方法提高软件的 性能,以满足业务的需要。 软件工作者们做了很多的工作来寻找一些有用的方式方法,开发软件性能 优化的工具,指导整个软件性能优化的过程。当前,一套比较通用的软件性能 改善过程的流程基本上可以分为以下几个基本步骤: 1 制定软件性能改善的目标。 2 对软件的体系结构进行建模,找出对于该模型比较使用的测试方法和测 试工具。 3 通过对软件的研究分析和相关的性能测试,找出软件性能瓶颈或实现缺 陷。 4 根据测试和研究结果,改进软件缺陷以达到性能优化的目标。 本文在以上基本步骤的基础上,细化了对队列网络模型这一特殊模型的整 个性能优化的过程。相关的工作主要有: i 细化了基于分治方法的软件性能自底向上的软件性能优化方法。 不同于其他的性能模型,由于队列网络模型本身的特点,可以通过一些 方法较方便的拆分成各个更小的模块,其中典型的方法是以模型中的每 个处理节点为基础对系统进行,把复杂系统拆分成各个子模块。基本的 也是最朴素的思想是自底向上,对各个模块进行性能调优,最后把各个 模块的性能调优的方案应用于整个系统,以期得到对于整个系统来说有 效的性能优化方案。而怎样对队列网络模型进行子模块的拆分,并且确 定每个子模块在整个队列模型性能中的作用,是本文需要重点解决的问 题。 2 提出了基于软件配置参数化方式的软件性能测试优化方法。 每个系统都会有各种不同的配置,大到使用的硬件平台和操作系统,小 到每个小模块的启动参数,从广义上来说,还包括系统使用的算法,使 用的技术等。这些对于整个软件的运行性能都会有或多或少的影响,很 多软件的性能问题也可能是由参数的配置不合理造成的。一个更好的运 一3 一 折江大学硕士学位论文 第1 章绪论 行环境,可以在不修改系统代码的前提下,最大限度的发挥整个系统的 潜力,从而达到改善系统性能的目的。本文细化了队列网络模型的基于 参数化的测试模型,通过不断调配系统参数和对于调整参数后的系统进 行集中测试,从而找出对整个系统的最优化的解决方案。其中提出了一 些参数选择的一般原则和方法。 3 把分治和参数化的思想融入到整个软件性能优化的过程中来,提出了一 套更加细化的并且可简单运用于实际的队列网络模型系统的软件性能 优化过程。 最后,将这些软件性能优化的方法运用到一个实际的项目中,以达到改善 项目性能的目的。该项目是一个典型的队列网络模型的消息处理和转发系统, 随着业务量的不断扩大,频繁遇到消息阻塞延迟等严重的性能问题,给业务的 扩展带来了比较严重的影响。我们通过对该系统的建模,抽象,模块化和参数 化,评估该系统的性能瓶颈,给出了对整个系统性能优化的建议,并同时实践 了以上提出的一些软件性能优化的方法和流程。 1 3 论文基本结构 本篇论文分为五个章节。组织如下: 第一章,介绍了软件性能改进的背景及其重要意义,并且总结了论文所做 的相关工作。 第二章,介绍了软件性能,软件性能过程和软件性能优化的基本概念和相 关研究状况,并简单的描述了在软件优化过程中需要使用的两种技术:软件性 能建模和软件性能测试。随后,介绍了一些当前流行的软件性能优化的方法及 其过程。 第三章,重点介绍了对队列网络模型系统的性能优化。首先对性能网络模 型进行了比较详细的分析,然后根据其本身的特点,提出了对队列网络模型性 能优化的分治和参数化的方法。最后,把分治和参数化方法融入了一般的软件 性能改善过程,提出并细化了一套适用于队列网络模型系统的软件性能优化过 程。 第四章,主要将第三章所做的工作运用于一个实际的系统一金融消息传 输系统,以期改善系统的性能瓶颈,提高系统的性能。 第五章,总结了在队列网络模型系统优化过程中的一些不足,并提出了可 能的改进方案。 一4 一 新扛大学硕士学位论文第2 章基本概念和相关研究 第2 章基本概念和相关研究 2 1 软件性能工程 2 1 1 软件性能 什么是软件的性能? 文献【3 】中给出的对于软件性能的概念是: p e r f o r m a n c ei st h ed e g r e et ow h i c hgs o f t w a r es y s t e mo rc o m p o n e n tm e e t s i 括o b j e c t i v e s f o rt i m e l i n e s s 。 软件性能指的是一个软件系统或其组件在适时性这个目标上所达到的程 度,是任何一个软件产品都具备的一个特征。原则上,我们可以坐在电脑前掐 着秒表来测量一个软件的性能。对于一个软件系统或模块而言,这可归结为其 对于及时性需求的一个指标。这里的及时性,是指响应时间和吞吐量:即该软 件响应一个请求所需的时间和在给定的时间段内其可以处理的请求( 或事件) 的数量。通常,我们以两个纬度来衡量性能指标:响应性( r e s p o n s i v e n e s s ) 与可 伸缩性( s c a l a b i l i t y ) t ”。 所谓响应性,即一个系统达到其响应时间与吞吐量方面的需求的能力。对 一个用户终端的应用程序而言,它通常从一个用户的角度来定义;而对于一个 实时系统而言,响应性则代表该系统处理一个事件到底有多快,或在特定时间 内能处理多少事件。 2 1 1 1 软件的响应性 通常,软件的相应性可以由以下几个指标衡量。 响应时间( r e s p o n s et i m 咖从请求发出到得到响应所花费的时间的总和。 下图给出了对一个w e b 站点的响应时间的描述。响应时间包括请求发出后 在客户端,网络,w e b 服务器,数据库服务器的传输和处理过程。 图2 - l 软件响应时间;c 1 + n l + a l 甘q 2 + a 2 h q 3 + a 3 + n 4 剞c 2 5 一 新江大学硕士学位论文第2 章基本概念和相关研究 对于响应时间,文献【4 】,【5 】给出的普遍受到认可的可接受程度的分为以下 几个级别。 表2 - l 系统响应时问及其用户感受 :响应时间 用户感受! o 1 秒在这一响应时间内,用户基本感觉不到系统的处理时间。 可以说,系统只需直接显示运行结果,而不需要给用户 任何的响应提示信息。 0 1 秒1 秒在该时间段内,尽管用户能够感觉到时间的延迟,但是 这一延迟不足以影响用户的思考。 1 1 0 秒 需要通过进度条提示等方法以保持用户有足够的耐心等 待处理的完成。 1 0 秒用户很可能放弃该项事务而转做其他事情,需要通过不 断的提示告诉用户大约完成的时间。 并发性( c o n c u r r e n c y ) :系统在同一时间内同时能执行的计算进程的数量。 一般来说,并发性越高,系统的请求处理能力越大,系统的性能也越好。 系统的并发性可以通过以下几种方式来达到; 1 通过使用集群等方式做到系统层面的并发性。 2 通过多进程机制达到操作系统层面的并发性。 3 通过多线程机制增加单独迸程的并发性。 周转时间( t u r n a r o u n dt i m e ) :从请求发出到处理完成所需要的时间。 一般来说,周转时间指的是平均周转时间,而单个消息的周转时间由于受 到各种条件因素的制约,可能会存在比较大的个体差异。平均周转时间的计算 公式如下: 霄 朋刀= 盘l 打 式中: 打了l 一平均周转时间( m e a nt u r n a r o u n dt i m e ) 肛请求i 从发出到处理完成所需耍的时间 俨抛理的请求的个数 一6 一 浙江大学硕士学位论文 第2 章基本概念和相关研究 有时候,为了反应系统对于消息处理的公平性,周转方差也是一个很重要 的衡量指标。周转方差越大,说明系统消息的处理时间差异较大,系统在公平 性上有所欠缺。周转方差的计算公式如下。 m s t t = 一肘玎) 2 2 - 2 式中: 稻刀- 一周转时间方差( m e a ns q u a r e dt u r n a r o u n dt i m e ) 乃- 青求i 从发出到处理完成所用的时间 仃? - 一平均周转时间 如果各个请求的处理时间基本相同,那么周转时间的方差也基本上趋近于 零,这是一个比较理想的状态。但是由于各种因素,比如因请求本身的复杂度 而导致的处理的时间不一样,或者各个请求的优先级不同,或者由于系统的资 源限制导致请求被放入等待处理队列,这些都会造成周转时问的不均匀,产生 比较大的方差值。这个参数对于一些业务逻辑比较平均的系统来说,是查看系 统处理请求的公平性的一个很重要的参数。 周转时间和响应时间是两个比较相似的概念。周转时间多数应用于后台的 请求处理系统,强调的是从请求发出到请求完成所需要的时问,而响应时问的 概念多适用于w e b 或操作系统,关注的是从请求发出到用户看到系统响应所需 要的时间。系统对用户的请求响应不等于用户请求的处理完毕,通常,如果请 求处理时间较长,会采取一定的技术来把部分完成的请求先呈现给用户,例如 网页的分页技术,这样可以很大幅度的简短响应时间,达到比较好的用户体验 效果。 吞吐率( t h r o u g h p u t ) :单位时间内系统能处理的请求的个数。吞吐率越大, 说明系统处理请求的能力和速度越快,系统具有较良好的性能。通常,吞吐率 可以用以下公式得出 t h r o u g h p u t = 蒜( f ,) 式中:歹一系统中最后一个被处理完成的请求 卜一系统中第一个被开始处理的请求 巧l 第j 个消息处理完成的时间 珐一第j 个消息开始处理的时间 2 3 需要注意的是,公式中第一个被开始处理的请求并不一定是第一个收到的 一1 一 渐扛大学碰士学位论文第2 章基本概念和相关研究 请求,同理,最后一个被处理完成的请求也不一定是最后收到的请求。 吞吐率一定程度上表示了系统处理消息的快慢,基本上取决于每个消息的 周转时闻和系统的并发程度。容易理解,如果每个请求的周转时间降低了,那 么所有请求需要处理的时间也会随之下降。同时,如果系统的对于请求处理的 并发性越高,也会带来总体处理时间的下降。如下图所示,由于系统在同一时 间内可以处理多条请求,那么系统所用的总时间不是每个请求处理时间的总和, 而是从第一个请求开始处理的时间t 1 到最后一个请求处理完成的时间t 2 ,。 圈2 - 2 并发性对于系统吞吐率的影响 2 1 1 2 软件的可伸缩性 上面给出的指标更多关注的是系统处理请求的速度和能力,而可伸缩性是 指系统对于将来可能增长的性能需求的适应能力。一个计算机系统的性能的好 坏,很大程度上也取决于它是否能满足不断增长的业务量的需求,如果系统只 能满足当前的需求或一段时间的需求,就势必会因为不能满足日益发展的需要 而不断地进行性能再工程,调整系统的性能,带来大量的人力物力财力的浪费。 要提高系统的可伸缩性,需要从软件的性能需求阶段就开始关注系统的可 伸缩性,并在设计和实施阶段以这一目标作为性能指标。当然,对于任何软件 来说,无限制的可伸缩性都是不可能的,业务量发展到一定阶段,软件必然也 会达到可承受的极限。可伸缩性也包含了对于系统运行极限的描述。如果系统 运行即将达到系统能承受的极限,就要采取一些措施,比如提升硬件配置或者 运用新技术重新设计开发。 一8 一 浙江大学硕士学位论文 第2 章基车概念和相关研究 不同的系统,对于可伸缩性的要求差异很大,一个中型企业内部网站,一 般来说预期的用户不会超过数千,而对于一个发展速度很快的网上购物网站来 说,其一开始的设计就需要严格的保证系统能够承受数以万计的用户,并不能 因为当前的访问量不大而忽视将来可能遇到的性能缺陷。另外,”l o 2 ”现象i l 剐 也是在设计软件可伸缩性时需要注意的,”l o 一2 ”现象指的是w e b 系统的客户高 蜂一般出现在上午l o 点和下午两点。所以,系统设计的时候,要注意到能够承 受最高峰时的系统压力。 2 1 2 软件性能工程 文献【2 】中给出的软件性能工程的定义为: s o o r ep e r f o r m a n c ee n g i n e e r i n g ( s p e ) 括am e t h o d f o rc o n s t r u c t i n g s o f t w a r es y s t e m st om e e t p e r f o r m a n c eo b j e c t i v e s ” 软件性能工程是一种应用于软件开发过程的为使软件达到性能要求而采取 的一系列的方法和过程。这是一种工程性的方法,它既避免了性能驱动开发的 高成本,又避免了“后期修正”的失效它主要使用各种模型来预测和评估软 件各个功能的代价,硬件规模,运行结果的质量,以及对各方面的资源的需求。 软件性能过程是软件工程和性能管理( p e r f o r m a n c em a n a g e m e n t ) 之间的一个 桥梁,作为性能管理的一个不可缺少的过程,软件性能工程贯穿于整个软件工 程的始终,从而保证开发出来的软件达到性能方面的要求。图2 3 给出了包含 在软件性能工程过程中或和软件性能工程有很大联系的各项软件开发过程中的 相关概念。 首先,软件性能工程是在软件性能管理的指导下,对于实际的项目,选择 合适的方法,过程和工具,为保证该项目的性能而采取的一系列的活动。软件 性能管理控制整个软件性能工程的运作和实施,是软件性能工程中不可缺少的 一部分。 其次,软件性能过程在整个软件工程中发挥着比较重要的作用。在软件的 需求分析阶段,需要做软件的性能和能力目标( c a p a e n yp l a n n i n g ) 同时,软 件的性能也是软件质量的一个很重要的方面,这一过程是软件质量保证 ( s o f t w a r eq u a l i t y a s s u r a n c e ) 中的一个必不可少的组成部分。 一9 一 浙扛大学硕士学位论文 第2 章基本概念和相关研究 图2 - 3 性能工程及其相关领域i j 】 同时,为了对系统做性能目标,达到性能要求,要对系统的架构和性能建 立一定的模型( p e r f o r m a n c em o d e l i n g ) ,并在这一模型的基础上,选取针对这 一模型比较适合的方法和过程,总结前人的经验,这样可以更好的帮助我们顺 利地实现目标,少走弯路。 软件性能工程中,软件性能优化( p e r f o r m a n c e t u n i n g ) 是一个很重要的方 面。软件性能的优化贯穿于软件开发的每一步中,在每次软件的大的阶段完成 后,需要对软件的性能做一个评估,如果发现潜在的性能问题,就需要对软件 的性能实行调整和优化。另外,在实际中,还有很多情况是随着业务量的扩展, 软件的性能不能支持日益增长的用户或者数据,这种情况下,就需要对已经存 在的系统做全面的性能分析,通过寻找瓶颈,优化配置等方式,改进已经存在 的系统的性能,以适应业务发展的需要。 可以看出,软件的性能工程是一个比较宽泛和复杂的概念,作为一个面向 软件的方法,它将焦点集中于构架。设计以及实施方式的选择上。开发人员通 过这些模型来选择有利的架构和设计。这些模型的目标是用来在整个的开发流 程中跟踪系统性能,并预防在项目后期( 如,最终测试阶段) 才使得性能问题 浮出水面。软件的性能工程所提供的,是建立一套高响应度的软件的原则,一 些商性能的模式或反模式,用于评估所需的数据,用于获取性能描述的流程, 以及在各阶段所运用的性能评估的准则。它将展示和预测性能的模型和一揽子 分析模型结合了起来,使相对精确的预测和评估得以成为可能。 一1 0 一 浙江大学硕士学位论文 第2 章基本概念和相关研究 软件的性能工程不会带来很严重的成本问题,相反,它让开发者搞清楚了 以下的一些问题: l 用户在指定的时间内能否完成操作? 2 硬件和网络的性能是否能够承受大容量的访问? 3 关键任务的期望响应时间应该是多少? 4 目前的系统设置,能否支持以后的性能需求 2 2 软件性能优化 软件性能优化就是提高软件性能的过程。通常,软件的性能优化有两个应 用场景,一是在软件开发完毕投入使用之前,定义软件的性能目标并且评测软 件是否达到了性能上的要求,从而可投入实际的使用。另外一个很普遍的应用 场景就是对于已有的系统的性能优化,而这一过程的主要目的就是在当软件随 着业务量的急剧增长越来越不堪其压力,体现出性能上的瓶颈时,对已有软件 的性能调优,使之能够胜任当前的业务压力。 对于软件性能的优化,文献【3 】给出了以下的一般的流程。 软件性能改善的第一个步骤就是评估软件性能的风险。通常,需要根据以 往的经验和对于软件运行状况的分析,得出整个软件优化的过程所需要投入的 时间和资源,以利于对于项目团队的组建和项目计划的安排。一般来说,如果 以前做过相似系统的性能优化工作,那么也许对该项目做起来就会驾轻就熟, 反之,需要花比较多的精力去熟悉系统,熟悉相应的工具和性能模型,需要在 计划中仔细考虑这些因素。 对整个项目做好一个初步的评估和计划后,就需要定义出项目中关键的用 例( u s ec a s e s ) 。一个系统中可能包含千千万万的用例,但是有些不经常用到, 有些比较简单,对于系统的性能影响比较小。在这一步骤中,要找出对整个系 统最关键的。最有可能影响系统的用例,而在接下来的步骤中,集中围绕这些 用例开展性能的调优。 接下来就是选取对每个关键的用例的测试场景。在这一步中,需要对每个 用例的使用场合和频度进行分析,找出典型的这些用例被用到的场合,并通过 模拟等手段对该场景进行实际的模拟,以重现性能瓶颈和为优化结果提供基准。 制定性能调整的目标是一个比较重要的步骤。在这一步骤中,我们定义了 经过系统优化后,系统应该能够满足的性能需求,而在接下来的性能优化过程 中,以是否能达到目标作为能否成功完成性能优化的条件之一。 浙江大学硕士学位论文 第2 章基本概念和相关研究 图2 4 改善软件性能的一般流程 接下来,就是对于性能优化的具体工作,包括对整个系统的建模,根据系 统模型选用合适的测试工具和测试方法,然后通过不断测试,改进完成整个性 能改进的目标。在这一过程中,如果发现由于原来系统性能改善的预期目标太 高而不能完成,就需要对这一系统目标进行重新制定。倘若发现通过性能优化 并不能达到预期目的,并且该目标是这次性能优化必须达到的,那么就需要重 一1 2 一 浙扛大学硕士学位论文 第2 章基本概念和相关研究 新考虑整个系统的设计和开发。并对系统的性能做出必要的预警。 最后,以住能目标的达成作为本次软件性能优化完成的基本条件t 并给出 相应的报告和优化方案,并准备最后对于生产环境系统的实施。 2 3 软件性畿模型 一般来说,在软件性能优化过程中,需要对软件的架构,运行环境等建立 模型,在这些模型的基础上运用相应的方法,工具对软件性能进行评估。而这 些模型是建立在对实际的操作过程,系统的运作流程,系统的运行环境等一系 列的抽象的基础上的。简单地说,一个软件性能模型描述了软件运行时的各种 资源的使用状况。一个好的性能模型可以使得软件性能工程变的更加简单并增 加性能优化过程的通用性,并且使软件性能工程师能够更好的关注于软件性能 的重用性,提高软件性能优化的效率【j 。j 。 软件性能建模的目标就是把实际生产性的系统抽象成性能模型,然后对这 些模型,确定相应的性能改进方法,选用合适的性能测试工具,选定对于该模 型来说重要的性能参数,得出对于特定模型有价值的数据,从而指导整个软件 性能改进的过程。 例如,时间流( t i m e df l o wg r a p h ) 模型【6 】是一个比较典型的描述软件时间 资源的模型。 图2 - 5 绘出了该模型的一个最简单的表示,对于这个系统,处理一个请求 所需要的时间为 p r o c e s s t i m e ;p a r s e t i m e + m a x ( a d d l t e m t m e , d e l e t e l t e m t i m e ) + f i x t i m e 因为图中给出的所有步骤的执行时间都是固定的,所以,对于该系统来说, 一个消息的处理时间即是最长的工作流时间:p r o c e s s t i m e = 1 2 + 8 + 4 = 2 5 m s 。 对于性能建模,研究者们已经提出了很多性能方面的模型,包括其中如下 几个比较经典且常用的模型。 一1 3 浙江大学硕士学位论文 第2 章基本概念和相关研究 图2 - 5 时间流模型 队列网络( q u e u i 唱n e t w o r k ) 6 l : 队列网络模型主要用于描述以请求队列为主要架构的系统,在系统的各个 组件之间,请求通过排队等待执行,因而等待时间是其一条非常重要的性能评 价标准。 图2 - 6 队列网络模型 m a r k o v 状态鹰 ( m a r k o vs t a t eg r a p h ) 7 】 一1 4 - - 新扛大学硕士学位论文 第2 章基本概念和相关研究 该模型主要关注系统内部状态的变迁,下图就是一个典型的系统状态变迁 图,由n o r m a l ,f a i l u r e , r e p a i r 三个状态组成。 图2 7 m a r k o v 状态图 序列图( s e q u e n c h a r t ) 1 6 l 类似u m l 里面的序列图,该模型表示的是系统中不同对象间的交互及通 讯过程。该模型可以用来描述系统的关键路径和复杂逻辑,从而知道软件的性 能测试的用例和场景。 图2 - 8 序列图模型 作为软件建模工具,u n i f i e dm o d e l i n gl a n g u a g e ( u m l ) 同样可以应用于软 件性能建模,并且,由于它可以同时建立软件性能和功能的模型,很好同一了 软件的这两个概念,使得软件性能模型变得更加具体,更加可分析【1 6 1 ,【”。前 一1 5 一 浙江大学硬士学位论文第2 章基本概念和相关研究 面分析的序列图模型就是一个很好的例子。 2 4 软件性能测试 软件性能测试不同于一般的软件功能测试,其关注的重点是软件的性能, 而不是功能。当然,软件的性能是以正确性为保证的,如果连正确性都不能保 证,软件系统纵然有着非常好的性能,对于软件本身来说也没有任何意义。 软件性能测试是整个软件性能优化过程中必不可少的部分,通过性能测试, 才能重现系统遇到的性能问题,找到系统性能方面可能存在的瓶颈并验证性能 优化方案的优劣。最后,性能测试的结果是判断是否达到性能调优预期目的的 衡量指标之一。 从【8 】可知,软件的性能测试通常可以分为以下几类。 负载测试( l o a dt e s t ) ;通过不断加压直到性能出现瓶颈或资源达到饱和, 用于发现性能瓶颈并配合性能调优。 压力测试( s t r e s s t o s t ) :测试系统在一定的饱和状态下系统的处理能力。 并发测试( c o n c u r r e n c yt e s t ) :测试系统的并发性,用于发现并发问题诸如 内存泄漏,线程锁,资源争用和数据库死锁的问题。 可靠性测试( r e l i a b i l i t yt e s t ) :加载一定的业务压力,同时让此压力持续运 行段时间,测试系统是否可以稳定运行。 2 5 软件性能优化方法学 在软件性能优化这一节中,已经对基

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论