Java程序性能分析工具的研究与设计_第1页
Java程序性能分析工具的研究与设计_第2页
Java程序性能分析工具的研究与设计_第3页
Java程序性能分析工具的研究与设计_第4页
Java程序性能分析工具的研究与设计_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、java程序性能分析工具的研究与设计 浙江大学硕士学位论文java程序性能分析工具的研究与设计姓名:齐学智申请学位级别:硕士专业:控制理论与控制工程指导教师:陈金水20050201浙江大学硕士学位论文摘要随着 软件平台技术的不断发展, 软件的应用已经从桌面的应用延伸到企业平台,大型信息系统,控制系统,嵌入式系统等各个方面。但由于 软件体系结构的特点决定了 软件执行效率不如软件,因此对 软件性能进行优化是非常有必要的。本文针对 软件的特点,开发了对 软件性能进行分析和优化的工具。并且对其实现的细节和使用的方法进行了阐述。本文的主要内容有介绍了软件性能的基本概念,在参考前人软件性能优化经验的基础上

2、,总结出软件性能模式和一般软件性能解决方案和原则。结合 语言和嵌入式系统的特点,着重对 语言的性能问题进行了详细的探讨。针对 性能基本问题进行性能分析工具的开发。在参考国外性能分析软件的基础上,使用和等技术开发出 性能分析工具。并详细介绍了该工具的设计和实现的过程和细节。介绍了该性能分析软件的使用方法,并且使用该工具对实际中有性能问题的 软件进行分析,演示了如何用该工具解决 软件的性能问题。最后对全文进行了总结,并指出当前 软件性能分析最新的技术和工具。这些是以后深入研究和工作的方向。关键词 性能 嵌入式软件 性能模式 虚拟机浙江大学顿士学位论文 浙江大学硕士学位论文致谢值此论文付梓之际,首先

3、谨向我的导师陈金水副教授表示崇高的敬意和衷心的感谢 本学位论文是在导师的悉心指导下完成的。在我攻读硕士学位期间,导师在学习、工作和生活上都给予了无微不至的关怀和帮助。导师严谨而开放的治学态度、渊博而深邃的学识、敏捷深刻的洞察力和平易近人的长者风范一直影响和激励着我,并将是我一生最宝贵的精神财富,使我终生受益。衷心感谢林庆女士和李卫华老师在我攻读硕士学位期间在生活学习上所给周到、热忱的帮助。感谢江勇硕士、余运强硕士、董辉博士、申兴发博士等对我的帮助和支持,在学习过程中与他们所进行的诸多有益的讨论,使我获益非浅。同时对所有关心和帮助过我的其他老师、同学表示诚挚的感谢,谢谢你们与我一起度过这段美好时

4、光。最后,我要特别感谢我的家人和朋友。一直以来,他们给予我在生活和工作上的理解、关怀与支持鼓励。谢谢齐学智年 月于求是园浙江人学硕士学位论文第一章综述嵌入式软件概述嵌入式技术的快速发展使其成为当前微电子和计算机技术的一个重要的分支,同时也使得计算机的分类从以前的巨型机、大型机、小型机和微机之分变成通用计算机系统和嵌入式计算机系统之分。嵌入式的应用更是遍及金融、航天、电信、网络、信息家电、医疗、工业控制、军事等各个领域。有人甚至预言嵌入式技术将成为后 技术的主宰。嵌入式系统的发展与应用潜力可见一斑。嵌入式系统是一个具有特定功能或用途的计算机软件和硬件的集合体,可以分成软件和硬件两个部分。其最大的

5、特点是其目的性和针对性,即每一套嵌入式系统的开发都有特定的应用场合和实现了特定功能。一般说来嵌入式系统具有以下一些特性 体积小。在智能化设备、仪器仪表、信息家电等应用场合,出于对产品的体积、成本等因素的考虑,一般要求将计算机控制部分安装在系统内部,并且要求所占用的空间尽可能的小。 良好的性能价格比。嵌入式系统要求开发周期短,性能优越,良好的性能价格比是在市场上取得优势的关键,这也是嵌入式系统设计的目标夕 存储容量小。嵌入式系统中一般没有硬盘等设备,而以 作为存储介质,由于的 的价格一般比较昂贵,并且嵌入式应用要求其体积尽可能小,故其容量一般不能很大。另外,慢速的硬盘设备不能满足一些实时嵌入式应

6、用的要求。 实时性比较强。嵌入式系统,一般作为应用的关键部分,时间特性要求非常严格。在一些应用系统中,超过了一定的时限,即使得出了所需的结果,但效果和没有得出结果是一样的,对应用系统没有作用甚至是有害的。嵌入式软件也随着应用的发展而不断发展,随着因特网技术的发展、带宽的提高,嵌入式 的速度和功能的不断加强,嵌入式软件开发和操作系统也不断地向前发展。简单的嵌入式系统应用可以不使用操作系统,但在应用程序功能需求比较复杂时,系统应用软件的设计相当复杂。很多系统都引入了嵌入式操作浙江大学硕士学位论文系统。嵌入式操作系统的引入,在应用系统目标软件和硬件之间架起了一座桥梁,它可以大大减少系统设计的复杂性。

7、目前比较成熟的嵌入式操作系统有 等。随着应用和开发的不断发展,嵌入式系统设计师们己利用现行嵌入式软件技术和 机积累技术迎接新一代嵌入式应用 同时,发展影响深远的若干新的软件技术,这些技术包括 行业性编程 规范,无线网络操作系统、 构件库和嵌入式 等。本文就 性能方面的问题进行了深入的研究。软件性能概述,软件性能的概念性能是软件产品的一种特性,表明软件系统或者构件的及时性,运行轨迹和内存使用率对要求的符合程度。及时性用响应时间和吞吐量来衡量,响应时间是系统对请求做出响应所需要的时间。例如图形界面软件在用户按下鼠标后 秒后做出反应。吞吐量是指特定的时间内能够处理的请求数量。例如,视频点播系统支持的

8、并发连接数量。及时性包括两个重要的方面 响应性和可伸缩性。响应性是指系统实现其响应时间或吞吐量目标的能力。在用户交互的系统中,一般从用户的角度来定义它,例如用户提交事务到事务成功处理所需要的时间。响应时间膝点负载图 可伸缩性曲线可伸缩性是系统在对其软件功能的要求增加的情况下,继续实现其响应时间浙江大学硕士学位论文或吞吐量目标的能力。图中的曲线描述的是系统的负载是如何影响其响应时间的。我们可以看到随着系统的负载的增加,系统的响应时间不断地增加。然而只要系统的请求量低于某个值,响应时间随着负载的增加变化不是很明显或成线性增长,只要高于这个值,负载的少量增加引起响应时间很大的变化,一般表现为成指数增

9、长。这么一个点一般称作最大负载点。或称为负载曲线“膝点”。响应时间成指数增长,一般是由于系统中的某些资源如 、硬盘、网络等 的利用率,或者是软件的某一个方面功能接近饱和造成的。这些硬件资源或软件的功能缺陷就是所谓的“瓶颈”。可伸缩性是目前软件系统越来越重要的一个方面。 应用程序就是一个很好的例子。越来越多的用户汇集到某个网站的时候,保持其 应用的响应性就显得尤其重要。为了保持软件系统的可伸缩性,尽量地提高软件系统的吞吐量。我们一般采取增加硬件投入和提高软件的性能,本论文主要探讨的就是 软件中提高软件性能的解决方案及其相关工具的设计。软件性能的重要性性能是软件系统的基本质量属性,也是对软件系统进

10、行评估一个重要的指标。很多软件系统都是因为最初实现的时候存在性能问题而无法使用。面向用户交互的系统可能因为对用户行为响应不够快而无法使用。嵌入式系统可能对外部激励做出的响应不够快而不能满足其实时性的要求导致无法投入实际使用。另外软件的性能与硬件资源的经济投入密切相关,软件性能的提高意味着可以用有限的硬件资源完成更多的任务,从而节约了硬件资源的升级换代的投资。此外软件性能方面如果存在问题,可能会产生一系列的负面的影响 影响客户关系、业务失败、收入减少、追加额外的项目资源、削弱竞争力、项目失败等等。因此,性能对于软件来说至关重要。导致性能问题的原因和一般解决办法导致软件系统性能瓶颈可能是硬件方面的

11、,也有可能是软件方面的。硬件的性能瓶颈频率的高低,内存容量的大小,外设 速度的快慢浙江大学硕士学位论文以及网络的带宽都有可能导致软件的性能低下。在遇到由于硬件引起的性能问题的时候,一般可以通过扩充升级硬件来解决性能问题。体系结构或总体框架设计一问题 经验表明,性能问题大多数情况下是由于基本体系结构设计的因素造成的,而不是低效的编码引起的。因此,一个系统能否满足期望的性能质量,在选择体系结构的时候就己经基本决定了。因此在选择体系结构和早期设计的时候,就应该对体系结构和性能进行测量和评估,等到有足够多代码的时候再进行性能测试是非常危险的。不合理的算法和程序结构 研究表明,系统中经常执行的 的代码影

12、响系统性能的 。如果这 的代码选择的算法或者程序结构不合理将大大地影响系统的性能。对于算法和程序结构的不合理,有两种方法 第一种是重构 代码,当重构代码后,应该具有很好的易读性,同时也为将来的代码修改提供了方便。另一种是算法选择。对于一个问题,通常有多种解决方案,在这些解决方案中,应该有一种最高效,最快速的方法。算法选择就是选择出这么一种高效的方案,从而达到提高系统性能的目的。无论是重构还是算法选择都依靠对系统场景的正确理解和经验的积累。软件性能优化的基本法则对软件性能的研究历史由来己久。软件性能优化的基本法则可以总结为 理解上下文环境、决策的折中、不要过度使用资源、正确设计测试。理解上下文环

13、境 任何软件的执行都有一定的环境和上下文,这里的环境和上下文指的是硬件平台环境,操作系统环境,宿主虚拟机环境,构件容器环境等。也有可能指的是用户交互场景,系统负载情况等。在这些不同的上下文环境中,软件的性能优化策略不能完全照搬,而要具体问题具体分析。决策的折中 性能优化通常是在不同的特性之间做出权衡。通常一个决策有几个特性,我们只能选择其中的一部分特性从而放弃另外一部分特性。这就需要从软件特性的重要性,软件特性的经济性等方面做一个综合的权衡。通常采用线性规划以取得最佳的折中平衡。不要过度使用资源 控制系统讲求控制系统稳定的裕度,软件系统也讲求系统最大负载资源的占用率。通常要求软件系统资源 ,内

14、存等 任何时候的使用率和消耗都不应该超过 ,这样当性能严重降低的时候,尚留有安全余地。浙江大学硕士学位论文否则,由于系统的抖动和外界的干扰因素,或者是突发的负载加重很容易造成系统的瘫痪。仔细设计测试测不准原理指出,任何测试将引入扰动,导致测试结果只可能无限逼近而不可能完全符合真实的特性。在设计测试的时候,要尽量使测试的场景逼近系统真实场景的情况。这样才能提高得到数据的准确性。更有效的解决系统的性能问题。软件系统执行模型,目的建立软件系统执行模型是为了更好地测量和评估软件的性能和对资源的需求。建立软件系统执行模型不仅在软件开发后期的性能测试很有必要,而且在软件设计的初期也是很重要的。在软件开发的

15、早期设计过程中,缺乏对设计和实现细节的了解,获得的信息不足以准确地模拟实际系统运行的性能。然而,这不代表早期不应该建模,相反,早期的建模对于保证软件体系结构的设计非常关键。在早期阶段由于信息的缺乏,通常只能构建最简单的可能模型,用它获得系统的基本性能特性。解析简单软件执行模型的性能特性将提供软件独立运行的资源需求,摒弃了用户负载,多用户等造成延迟的影响。所以测试简单软件执行模型的性能通常是最乐观的性能。如果在未考虑其他附加性能影响因素下简单软件模型的性能不能满足期望的性能要求,那么就没有必要构造更加复杂的模型,从而证实软件的体系结构设计是不合理的。随着对软件系统的设计和信息的了解越来越完整,就

16、可以在重要区域优化软件执行模型。这个模型更准确地表现了系统的性能特性,在引入诸如负载、多用户这些资源的因素后,这个模型的性能就更加贴近真实系统的性能特性。系统执行模型的表达一般采用执行图表达系统执行模型。执行图为软件执行步骤的可视化描述。软件执行图为软件执行过程的抽象图它说明所关心的性能细节。不必反映出己经了解的、有关设计的所有处理细节与性能无关的环节也应该排除在外。浙江大学硕士学位论文执行图包括节点和弧,节点表示处理步骤一软件系统中的操作调用以及完成某个具体功能的程序语句集合。弧代表执行的顺序。卜图为 的一个系统执行模型。图 系统简单执行模型模型解决方案建立好软件的执行模型后,通过计算出每一

17、个过程的系统开销,这些开销主要是系统资源的开销,包括 时间性能开销、内存空间性能开销、 开销和网络带宽开销等,然后通过线性叠加等简单计算就可以求出整个软件执行模型的系统开销了。对软件执行模型进行分析,可以达到如下的目的 对最佳情况响应时间进行快速考查,确保体系结构和设计将带来满意的性能。 评估选择方案的性能影响。 为性能管理确定系统的关键部分。软件测量和探测,软件测通概述测量为软件性能模型提供输入数据,验证并确认性能模型,确定性能目标是浙江大学硕十学位论文否己经实现,并且监控系统在整个生命周期内的性能。然而,获得正确的测量值并不总是那么容易。有些工具用来获得系统级的测量值,剖视器 能提供代码级

18、的测量值,如程序调用一个特定操作的次数或对象占用的内存空间等。另外,只有测量工具是不够的,还需要有测量的策略,确定需要有哪些数据、如何收集以及如何设计为测量提供合适上下文的实验。测量的目的软件的测量服务于以下几个目的了解系统 对现有系统的测量值提供了相似系统或规划中系统早期版本的性能信息。模型规格说明 实验、原型或相似系统的测量值提供了工作量负载数据以及资源使用率的估计。卜模型更新 用形成中的软件的测量值代替更早的估计值以提高模型精度。卜模型的验证与确认 测量值提供了用于比较性能模型和实际性能的数据,提供了用于证明与性能目标一致或与特定问题的改进需求一致的数据。软件性能评估 测量值提供用于监控

19、软件性能的数据,为确定改进部署配置提供数据。测最的数据为了满足上述几个目的,应该选择正确的测量数据。一般可以选择以下四种类型的测量数据工作量负载数据 每种负载的请求数量、请求速率以及请求模式。数据特征 数据总量以及每个数据项的大小。如果正在重新设计数据库应用软件,那么应当 量每个数据项的请求频率,哪些数据项被同时请求。拥有系统的此类数据,有助于指导数据库的设计,从而提高新软件的性能。执行特征 有三种类型的执行特征需要测量卜 路径特征测量每个重要路径的执行次数以便计算循环反复的次数和条件路径的执行概率。软件资源使用 对于每种被请求的软件资源,测量请求次数和平均持续执浙抚大学硕十学位论文行时间例如

20、,网络通信、数据库访问等等。 处理开销 量软件资源请求各种关键计算机系统资源提供服务的总量。关键资源包括 设备、网络以及其他任何有限的而且必须在执行进程间共享的资源。计算机系统的使用 此类测量值为完整的场景以及执行图中每个节点? 包括基本节点和扩展节点计算以下统计值 场景响应时间 从场景请求到结束的端到端时间实际服务时间和在队列中等待的时间。 场景吞吐量 单位时间内例如每小时、每秒、高峰时间内等 场景执行的次数。卜 关键计算机系统资源使用 对每种关键计算机系统资源,每个工作量负载场景的实际服务时间以及等待时间。 资源利用率 忙时间所占的百分比。 资源吞吐量 资源完成服务请求的速率。 资源队列长

21、度 等待服务的作业的平均数。技术简介是随着网络而迅速发展的一门软件技术,它指一种语言或者一组特定的平台。同时它定义了一组安全,可移植,可扩展程序规范。 语言编程语言可以用来编写终端应用程序,服务器程序,同时也可以用来编写资源受限系统 和嵌入式系统 中的程序。 程序通过 虚拟机解析运行,而不是直接在操作系统上运行。这就意味着只要实现了 虚拟机,无论什么宿主操作系统和硬件都可以运行 程序,同时也不管这个 程序是在哪个操作系统平台上进行开发的。这就是 程序的跨平台性。 平台平台指的是一种运行在其他硬件或者操作系统上的一种软件平台。由于硬件平台的内存, ,网络等计算能力都有不同, 针对特定的硬件平台和

22、浙江大学硕十学位论文应用环境推出了不同的软件平台。技术包括下面的几种平台,每一个特定的平台都是基于一种 虚拟机,这种 虚拟机己经被移植到目标的硬件环境。也就是说,一个 应用程序无需修改就可以在另外一个装有 虚拟机的环境下顺利地运行。提供核心的 运行平台和 桌面应用程序开发的功能, 是和 的基础。 提供编译器,开发工具,运行时和特定的。基于这些,用户可以编写 桌面应用程序和 一种浏览器中嵌入的 小程序。 定义开发和部署多层企业级的应用程序规范, 基于 但是提供其他的服务,工具和 。基于这些服务,工具和 ,企业可以使企业级的应用开发变得简单。 是针对消费类电子产品和嵌入式系统的 平台。这种平台通常

23、部署在移动 ,机顶盒等设备上。是针对内存和计算能力很小的智能设备和智能卡的平台,它使得这些设备的软件开发也能从 技术中受益。 虚拟机虚拟机是 语言和 平台的核心, 虚拟机使 程序平台中立性成为可能。 虚拟机是一台抽象的计算机,其规范定义了每个 虚拟机都必须要实现的特性。和真实的机器一样, 虚拟机有一组指令集,在不同的宿主环境可以执行相同的指令, 虚拟机对 编程语言是透明的,虚拟机主要功能是解析并执行 文件,这种文件格式含有 指令通常称为字节码。当运行一个 程序的时候,也就运行了一个虚拟机实例。当该程序结束的时候, 虚拟机实例也随之消亡。浙江人学硕士学位论文虚拟机内部结构如下图所示文刊方法区栈寄

24、存器 本地方法运行时数据本地方法接口本地方法库图, 谧拟机丙部结构菌虚拟机没有寄存器,其指令使用 栈来存储中间数据。这样设计可以保证 虚拟机的指令集尽量的紧凑,同时也便于 虚拟机在那些只有很少寄存器的平台上实现。同时因为 这种基于栈的体系结构,也导致 速度运行比较慢。 语言特性语言作为一门现代编程语言,具有以下几个特点。面向对象,面向对象开发强调问题领域到软件编程领域的一一映射,这种方法更接近人类的自然思考。能够更有效的描述和开发系统,特别是当系统变得很大很复杂的时候,面向对象开发方法能够更容易更灵活地开发系统。现在面向对象开发技术已经成为软件工程中的一个重要的开发模式。面向对象的软件工程涵盖

25、软件开发的全过程 分析一设计一编码一测试一维护。是一种解释性的语言,源程序首先被编译成中间代码的形式,然后在每次运行之前都要经过虚拟机解释。其次与语言不同,语言就背着要兼容语言的包袱,而 程序是一门重新设计的语言。正因为如此, 被设计成一种纯粹的面向对象语言。异常机制,异常处理是现代高级语言的一个重要特性, 程序内建异常机制,为程序员省去了很多异常处理的细节问题。内建多线程,可以在语言级支持多线程是 的一大优势,这种优势主要体现在同步和共享资源上。浙江人学硕士学位论文垃圾回收,内存管理是大型软件需要重点考虑的一个问题,很多大型的 或者 程序都因为内存管理不当而最终无法交付使用。在 中,使用一种

26、自动内存管理机制 垃圾回收。程序中使用 创建的对象不用通过明确的代码来释放它们。垃圾回收器将自动释放不再被程序使用的对象。这样一来用户就不用花精力在管理内存释放方面的问题了,同时也可以保持程序完整性。然而垃圾回收器的引入也加大了程序的负担,可能会影响程序的性能。因为 虚拟机必须监视哪些对象正在被执行中的程序所引用,并且动态地终止并释放不再被使用的对象。 技术在嵌入式系统中的应用在嵌入式系统领域,随着硬件技术的发展和对系统功能越来越高的要求,当前 位 ,以及 大内存在嵌入式中的应用也越来越普及。嵌入式的功能也越来越强,导致软件的复杂度也越来越高。于是在嵌入式系统中对高级语言的需求和支持也是越来越

27、普及。由于 语言的简洁优美,完全面向对象的设计,并且语言内置多线程,自动内存管理,垃圾回收等功能。是一门得到广泛运用的高级语言 而且其跨平台的特性,只要有 虚拟机平台支持,可以实现“一次编译,到处运行”,非常适合于复杂系统的开发。于是很多嵌入式系统引入操作系统后,还实现了虚拟机。有些系统在硬件层次实现了 虚拟机。由硬件直接执行 字节码。但是支持 语言的代价也是很大的。由于 程序运行在虚拟机上,需要通过虚拟机对 类文件进行加载,分析,执行。比起其他直接编译成直接由机器执行的指令的程序来比。其速度上大打折扣,并且内存的需求也比传统的软件需求大。 是日本某自动售货机中对 运行的支持平台。本系统为克服

28、 在解释执行机制所引起的执行速度慢的问题,在硬件上采用公司开发的芯片,能够直接执行 的二进制代码。使得 的执行速度提高一个数量级以上。 的运行平台框架如下浙江大学硕士学位论文应用组件应用组件应用组科自动售货机平台 库嵌入式操作系统图,运行环境平台框架论文的立题依据与研究内容由于 的应用非常广泛,基于 的平台和软件迅速发展,而性能是软件质量属性一个很重要的方面,针对 软件存在性能问题还没有一个切实可行的指导规范和手册。研究 性能软件分析技术可以紧跟国际最新的性能分析技术,积累 软件优化经验。另外目前市场上已经出现了很多 性能分析软件,但是这些软件对于用户来说不够透明,扩展性不是很强。其次这些工具

29、都是国外公司开发的,国内尚未有相关产品。这些工具的核心技术如果都被国外软件厂商所垄断,不利于国内软件的健康发展。另外功能全面的软件工具大多价格昂贵,不为普通用户能够承受。性能管理在软件的开发过程中经常被忽略,要将软件的性能管理引入软件的开发流程要解决的问题还是很多 基准测试,性能标准的建立,性能建模,流程的建立,工具的开发等。本文介绍了性能的基本概念, 软件平台及其技术,并且介绍了 软件性能设计基本原则和软件性能模式。结合对国外性能分析技术和工具的分析,开发了一个 性能分析工具,详细的介绍了 性能分析工具的开发和设计过程,并且依据工具解决了 软件实际性能问题。同时指出了在 性能分析领域的未来发

30、展方向和技术。本文一共分为以下几个章节。第一章系统的介绍了软件性能相关知识,响应性和伸缩性的概念。分析了浙江大学硕士学位论文导致性能问题的软件硬件原因及其响应的解决方案。同时介绍软件性能建模及其目的,以及软件测量的概念和 软件平台的基本结构及其 软件的特点。第二章在前人的经验的基础上,总结了 软件的性能设计原则,和 软件性能模式。并且提出了很多性能问题的具体解决方案。第三章介绍了 软件性能分析的基础技术 。同时介绍了当前国外优秀的 性能分析工具。我们开发的 性能分析工具也是基于技术的。同时介绍了开发 性能分析工具采用的技术及其总体软件组成结构。同时指出了 胜能分析工具设计应该注意的基本问题。第

31、四章详细介绍了 性能分析工具 端分析代理程序的设计。第五章详细介绍了 性能分析工具分析器前端程序的设计,及其图形操作界面和基本的功能。第六章通过结合现实中存在问题的 软件,用该 性能分析工具进行分析。介绍了分析 软件的基本方法。第七章随着 平台技术的不断发展,新的 性能分析技术也不断涌现。着重介绍并分析了等技术的特点以及未来可能的发展方向。最后总结了本文所做的工作,并且指出了有待于深入分析的问题和今后的研究方向。浙江大学硕士学位论文第二章 软件性能问题及其解决方案本章在参考了前人经验的基础上,总结 软件从设计到编码过程中,以及在实际上下文运行环境中可能遇到的性能问题,并且提出了对应的解决方案。

32、本章包括两个方面的内容 面向性能的设计原则和性能模式。面向性能的设计原则性能原则有助于识别出可能满足性能目标的设计方案。这些原则既不是创新,也不具有革命性。其中某些原则己经在实践中获得应用。性能原则是对我们至今看到的、量化的性能评估方法的补充,而不是替代。性能改进牵涉到许多折中性权衡性 的问题。例如,本地性能改善可能对整个系统的性能产生负面影响。,性能控制原则性能目标原则 性能目标通过明确地说明性能需求来控制性能,说明要足够精确以便可以定量地确定软件系统是否满足该目标。如果能够在必要的地方进行量化,那么就可以评估可选方案,选择满足需求的最佳途径。应当为每个性能场景定义一个或多个性能目标。在整个

33、建模过程中,可以通过比较模型结果和目标,确定是否存在不能达到目标的巨大风险,并尽早采取适当措施。得到测量结果,就可以确定软件是否达到目标。探测原则 探测软件意味着在关键点插入代码探测器 从而测量有关的执行特征。例如,探测器可以记录每个性能场景执行的次数、端到端执行的响应时间、每个会话上事务的个数、一次取款的平均金额、更新一个订单所进行 读写数、网络消息的平均大小等。插入探测器使测量能够进行、激活它们来真实地记录数据、分析并报告结果之间有所不同。探测原则不能直接改进性能,但是对于改进性能是必须的。即使有可用的性能测量工具,由于能力上的限制仍然需要进行软件探测。大多数测量工具是在应用外部收集系统级

34、数据,比如总的程序运行时间,而不是关于函数的数据,像端到端响应时间对于跨越多个事务的工作流程。我们有时需要的是关键代码部浙江大学硕上学位论文分的资源需求信息,而不只是软件整体的信息。为了收集这些数据,需要插入调用系统例程的代码,将关键事件及其数据写入文件以备后面的分析使用。独立原则中心化原则 中心化原则把注意力集中在对性能最具影响的软件部分从而提升性能。此原则来自约定俗成的、有关程序内部代码运行的“ 规则”。这项规则说明 或更少的程序代码占用 或更多的计算机资源。该代码运行规则被延伸应用到系统功能需求上。中心化考虑区分出系统功能的一个子集 或更少,它在多数 或更多 时间里被使用。这些常用功能是

35、支配性工作量负载功能。它们引起软件系统操作的一个子集 被执行的最多 ,对操作中的代码也是如此。这些支配性工作量负载功能的改进对系统的整体性能具有重要影响。使用中心化原则的关键是识别支配性工作量负载功能并使其处理过程最小化。固定点原则 为了提高响应性,固定点原则要求应当在最早可行的时刻建立连接。这样,保持该连接具有成本有效性。如果保持该连接获得的效益抵消了保持的开销,那么它具有成本有效性。在某些情况中,早期固定可能会降低设计的灵活性。为实现性能目标可能需要做出妥协。具体应用比如 中对象的多态提供了系统的灵活性,多态采用的动态绑定策略虽然提供的系统灵活性,但是牺牲了性能。与此同时,不采用多态而采用

36、内联函数,静态调用等其他方式可以节约性能成本,但是牺牲了灵活性。使用固定点原则必须充分了解新系统的预期使用模式以及典型的应用,这样才能有效地应用这些原则。本地化原则本地化是指期望的活动、功能和结果与产生它们的物理资源“靠近”。例如,如果需要将一组名单排序,数据在本地内存中而不在远程网络节点的磁盘上,本地化就是成功的。本地化的类型有?空间的。?时间的。有效的即目的和意图。?程度 即强度或规模。浙江大学硕上学位论文这条原则一般在分布式系统中运用比较多。处理与频率原则 这条原则考虑的是处理一个请求要完成的工作量以及收到的请求数。它试图让二者达到平衡。有可能通过增加每个请求的工作量而减少请求数,同时也

37、可能增加请求数而减少每次请求的几作量。处理与频率原则要求处理与频率的乘积达到最小。 协作原则共享资源原则 计算机系统中的资源是有限的,因而进程线程 竞争对它们的使用权。对于某些资源,共享是可能的,由此不止一个进程线程 可以使用它。如多个进程线程 可以从数据库的同一部分读取数据。对其他资源,进程线程 要求独占排它 而且必须轮流访问它们。比如只有一个进程线程能够更新数据库的同一部分。独占资源的需求以两种方式对性能产生影响。其一,对资源访问的调度需要额外的处理开销。其二,进程线程 等待轮流使用资源时存在争用延迟即,保持时间。延迟取决于有多少进程线程 要求访问资源,以及一旦获得资源后要保持多久。共享资

38、源原则要求,如果有可能就共享资源。要求独占访问时,使保持时间和调度时间的和最小。共享资源原则通过协作减少争用延迟从而改善整体性能。并行处理原则 有时可以通过将一个计算分割成多个并发进程线程 来减少总的处理时间。并发可能是?真正并发,不同处理器上的进程线程 同时运行。在这种情况下,处理时间的减少量与处理器的个数成正比。?表面并发,进程线程 在一个处理器上多路复用。此时情况更加复杂。尽管其中一些处理可能重叠一个进程线程 使用,而另一个进程 线程 访问磁盘,但是每个进程线程 有时会经历附加的等待时间,这是由于对另外的同一资源例如网络 的争用引起的。真正并发和表面并发都需要并发进程线程 间通信开销和协

39、调的开销。如果不注意,这项开销可能等于甚至超过将计算分割成并发进程线程 节省下来的时间。并行处理原则是对这种折中的认识成果。并行处理原则 当处理过程中的增速能抵消了通信开销和资源争用延迟时浙江人学硕士学位论文执行并行处理。分散负载原则 当多个进程线程 要求排他独占 地使用一个或多个资源,而且必须轮流访问资源时,它们必须经历资源的争用延迟。我们可以降低资源的竞争延迟,要做到以下两点。?调度进程线程,使它们不同时使用资源。?划分资源,使进程使用资源的不同部分,而不独占整个资源。分散负载原则要求,如果可能,就要通过在不同时间或不同位置处理冲突负载从而分散负载。这条原则类似于共享资源原则? 二者都着重

40、于资源争用延迟。共享资源原则通过使调度时间与保持时间之和达到最小来缩短延迟。这条原则通过减少在给定时间需要使用资源的进程数以及减少它们需要的资源量来缩短延迟。有些情况下,这两条原则之间可能存在交叉。例如,减少并发进程线程 需要的资源量,也减少了保持时间。使用原则把独立和协作性能原则的应用效果进行量化是有可能的。对于独立原则中心化、固定点本地化、处理与频率原则,一个简单的、显而易见的计算通常就足够了。量化协作原则的效果需要建立和求解系统模型以评估争用延迟及其他有影响的因素。光有这些原则的存在不足以保证不会再遇到性能问题,必须有效地使用它们,应该注意下面几个方面。将性能原则应用于对性能有重要影响的

41、构件。使用性能模型量化对整体性能改进的影响,确保这个改进与其他改进的一致性。应用性能原则直到满足明确定义的性能目标。确认性能目标是否切合实际,实现目标是否具有成本有效性。建立一个定制的、针对应用领域的、对应每条原则的事例列表。发布这个列表,让同领域的其他人也能获益。浙江大学硕士学位论文性能模式有经验的软件开发和设计者通常可以做出优良的设计和解决方案,但是新手则面对一个问题无从下手,有的时候做出的设计和解决办法也是拙劣和不成熟的。这就是经验的作用。模式就是对软件开发过程中经验的表达。是对于在多种不同执行上下文中同类问题的一种通用的解决方案,但是可以针对特定的上下文进行专门化。模式由于是经历过时间

42、的考验而存活下来的解决方案,其软件人员可以根据具体的上下文放心地选择各种模式来解决问题,大大节约软件开发的时间。从软件性能进行探讨,提出了性能模式这个概念。性能模式描述了构建具有响应性和可伸缩性软件的最佳经验。性能模式与设计模式相比处于更高的抽象层次,然而它们也密切相关。设计模式可以提供性能模式的实现。一旦选定性能模式的一种特定实现,就可以唯确定类的设计和交互关系。下面结合 软件介绍几种软件的性能模式,快速通道这种模式的是通过减少支配性工作量负载需要的处理量来改进响应时间。这种模式在 应答系统中很常见, 应答系统通常将最常用的选择放在最前面。这样用户就可以很快地根据 的提示找到他所需要的信息和

43、功能。在菜单选择界面设计中,软件设计人员通常将最常用的功能放在最前面,并且其中很多常用功能有工具栏支持,这种设计就是为了减少用户在找寻所需功能无谓的时间损失。 也是将用户常用的选择放到最快捷的地方。这种模式在 语言中体现主要是条件分支条件的前后顺序的确定。例如爹麟黎禅燕袭赘于样浙江大学硕十学位论文往川为了使这段代码获得高性能, 的顺序应当由其在系统中执行的频率高低决定。 是命中频率最高的条件。通常在系统的初级开发阶段,不知道哪种条件执行的频率高。这就要求编程人员利用工具对系统执行过程进行监控,或者将条件的命中次数记入日志并进行分析,从而确定条件命中的频率高低,同时在系统执行的不同时段,可能命中

44、条件频率不一样,例如自动售货机在夏天购买冷饮的条件命中比较多,而到冬天加热的饮料的条件命中比较多,这样就要求系统条件判断顺序可以根据时间进行配置。快速通道以中心化为原则,它通过减少软件中频繁使用的功能所需要的处理量来减少系统的负载功能的响应时间。它还可以通过避免某种资源的消耗来降低系统的总负载。重要的任务优先这种模式就是要求把精力集中在重要的任务。在很多条件下,瞬间的负载可能会超出系统可以承受的最大计算能力。在电子商务网站中,由于请求的离散特性,可能导致同一时刻并发交易数超过系统的最大容量。在嵌入式系统中,由于环境的变化和系统的输入突发性也可能导致计算能力的瞬间不足。在很多的应用系统的设计中,

45、通常是将所有的请求都放入一个 队列中。在这种设计下,当客户的请求超出系统最大处理能力的时候,排在队列末尾的那些请求就不会被及时处理,而这些没有被及时处理的任务中,其中有可能就有非常重要的要求及时处理的请求,如果这些请求得不到处理,有可能引起灾难性的后果。一般的软件系统如操作系统通过采用下面的方式处理这类情况 将任务进程或者线程 赋予优先级,区分任务的优先级并且优先执行最重要的任务。为各种不同的请求和处理分配任务。然后把高优先级分配给最重要的任务、低优先级分配给次要任务。这样重要任务的执行资源就会得到保证。在系统发生超载的情况下,系统重要的关键的任务还是可以顺利的执行。这样会使系统的服务质量达到

46、最佳并且改进了可伸缩性。重要事情优先模式只适应瞬间超载的情况,如果系统韶载不是瞬间的 邢次浙江大学硕士学位论文应该考虑减少系统所需的处理量或者升级计算环境。支持内建的多线程机制。 提供 种优先级级别。但是这些级别与宿主的操作系统相关。例如 操作系统只有 种优先级提供。因此 的优先级别高低可能不能一一影射到操作系统的优先级高低中。但是丁 和的优先级高低是在任何操作系统环境中可以保证,可以移植的。通过调用 类提供的 就可以设置线程的优先级了。因此在遇到很多请求需要进行处理的时候,我们对于这些请求应该分优先级进行处理,优先处理重要的,关键的业务过程。通常的做法有两种,一种是将同等优先级的请求放入同一

47、个队列中,然后由不同优先级的线程来处理这些队列中的请求。另外一种是将所有的请求放入一个队列中,每次放入请求的时候将优先级最高的放在请求队列的最前面,这样也能保证先处理优先级高的请求。拐合模式出于性能的要求,有的时候将常用的,对性能影响比较大的程序调用路径,或者程序调用接口有意地进行祸合。在面向对象系统中,祸合模式通常是提供粗粒度的对象和接口来实现的。粗粒度的接口和对象通常是细粒度对象和接口的聚合模式。例如获取客户信息包括取得用户的姓名,地址, , ,电子邮箱等信息,一般的设计是通过分别调用 。然后将所有的信息拼成一个字符串或者是一个对象。如果这类任务使用的频率很高,我们就可以重新设计一个函数将

48、获取这些信息的五个函数祸合成一个函数,这个函数可能被称作 。这个函数一次性取得所有的客户信息。大大的减少了交互的次数,减少了函数调用和单条信息获取的系统资源消耗。在分布式系统中,祸合模式的运用就更加重要了。因为远程信息的获取和远程调用包括数据访问成本和网络通信成本,一个函数的调用成本更高了。例如系统中包括数据库访问的时候,由于数据库可能部署到另外一个节点,或者是远程主机上,涉及到获取和更新数据库信息就比较慢。在面向对象软件中,用于方法调用的开销常常是必须关注的一件事。当一个浙江大学硕十学位论文方法被调用的时候,会发生好几件事情。传送给被调用方法的参数被送进堆栈,与它一起的还有要返回的指令的地址

49、。还要保存调用方法的局部变量在堆栈中的位置,以便它们能够在被调用方法返回时回到原位。当被调方法返回时,必须反过来执行这个过程以便恢复处理器的状态,并更新因为调用而改变的所有参数。调用方法所需要的精确的工作量取决于硬件 软件平台,但是一个比较准确的估计是一次方法调用要消耗的机器指令在 条之间。如果进行参数或返回值的拷贝或其他临时对象,那么开销会更大。在大多数情况下,这项开销的影响并不大。然而,在有些情况下,它将决定是否能够达到性能目标。这种现象在软件系统框架的核心函数中常常可以看到。在系统运行过程中,总有几条调用路径是非常频繁的,如果将这几条路径找出来,也可以运用祸合模式,将这几条调用的路径合并

50、成一个方法或者函数,这样可以减少每次函数调用的代价。然而,祸合模式也依赖于特定功能的访问的频率来决定是否使用,因为祸合模式可能导致结构的不优美,面向对象设计的一个原则就是高内聚,低祸合口如果功能访问的频率非常小,那么就不必采用藕合模式。利用工具监视和测定特定功能函数和路径的执行频率有助于对系统的性能改进进行分析,从而决定是否使用祸合模式。 批处理摸式这种模式通常是将经常性的,同种性质的请求合并在一起,从而节约发动一个单独请求额外的系统调用和资源的开销。在网络通信中也有类似的处理,很小的数据包通常和其他小的数据包合并成为一个大的数据包,从而减少附加的数据量数据包头数据,完整性冗余检查数据等。在消

51、息机制中,通常将重复的消息合并成一个消息,例如消息,多次发送的这个消息只被系统接收和处理一次。这样也大大减少了系统的处理量。在数据库操作中,通常将批量的插入和删除请求合并成一个更大的请求。这样就减少了数据库连接,加载数据库驱动程序以及其它系统资源的使用。批处理模式降低了完成所有任务所需的总的处理量从而降低了总的资源需求量,从而提高得系统的可伸缩性,同时批处理减少了单个任务的处理时间从而浙江人学硕士学位论文改善了响应性能。应用批处理的结果是 使用与单个处理请求模式相同的工作量能够处理更多的请求。批处理模式适用于需要大量启动开销的经常性任务。在确定使用批处理模式的时候,必须了解请求的频率以便确定是否使用批处理模式。如果请求的频率比较低,导致每次批处理的任务处理的只有少数儿个请求,那么这个系统就不应该采用批处理模式,另外在实时系统中所有的请求都要求得到立即得处理和响应,也不应该采用批处理模式。同时批处理模式的应用可能导致系统在很长一段时间内处理批处理事务,导致其他请求的延迟,如果这种延迟对于软件的其他方面的性能有影响,那么也不应该采用批处理模式。所以批处理模式应该根据系统的特性小心使用。在批处理模式的实施过程中也依赖于系统监控工具的提供的数据来获取请求的频率,开销和平均每个请求的延时,然后根据这些数据可以确定是否采用批处理模式,以及采用批处理情

温馨提示

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

评论

0/150

提交评论