本文译自Wikipedia的Performance tuning词条,原词条中的不少链接和扩展内容非常值得一读,翻译过程中暴露了个人工程学思想和英语水平的不足,翻译后的内容也失去很多准确性和丰富性,需要在之后的时间继续细读。
Performance Tuning特指计算机系统的性能优化工作。它通常是根据某个现实或潜在的性能问题而发起的。绝大部分系统都会因为负载的升高而导致性能下降,一个系统对于负载的可承受能力称为可扩展性(scalability),调整系统使其可以承受更大的负载就是performance tuning代名词.
系统性的调优工作可以遵循以下步骤:
- Assess the problem and establish numeric values that categorize acceptable behavior.
- Measure the performance of the system before modification.
- Identify the part of the system that is critical for improving the performance. This is called the bottleneck.
- Modify that part of the system to remove the bottleneck.
- Measure the performance of the system after modification.
- If the modification makes the performance better, adopt it. If the modification makes the performance worse, put it back the way it was.
- 评估问题,为系统分类建立可接受的度量指标
- 测量系统调整前的性能表现
- 分析系统运行性能的瓶颈
- 调整系统消除瓶颈
- 测量系统调整后的性能表现
- 如果性能改善,则采纳调整方法;如果未得到改善,回滚调整措施
这种测度-评估-改进-学习的工作方法来自QA体系。
性能问题往往体现为系统运行缓慢或者失去响应,它往往是因为负载过高,导致系统某些组件达到了其最大响应能力的限制,这些限制我们称其为系统瓶颈。有一些方法可以用以改进系统性能,其中包括code optimization,configuration optimization,caching strategy,load balancing,distributed computing和self-tuning。
性能分析:
性能分析也叫做profiling,是一项采集程序运行数据以研究程序运行情况的工作。它的目的是分析和判断对程序的哪个部分进行优化。profiler是指分析程序运行情况的工具,特别是分析函数运行的频度和持续时间。最早的profiler出现在1970s,人们往往根据它们的输出信息的类型和数据采集的方式对他们进行分类。
性能工程:
性能工程学科包括角色、技能、活动、实践、工具和可交付成果,用于满足设计系统的非功能性需求,如增加业务收入,减少系统故障和项目延期,避免不必要的资源和工作投入。几种常见的不同方法的活动:
- 识别关键流程
- 细化流程的用例和系统容量说明。
- 制度建设,包括性能调优。
- 构建系统的部署
- 服务管理,包括系统部署后的实施活动
self-tuning:
self-tuning系统能够优化其内部的运行参数,以最大化或最小化目标函数的实现,例如最大化效率或最小化错误。self-tuning系统通常表现出非线性自适应控制。self-tuning系统已经成为航空航天工业几十年来的一个品质证明,像这类反馈是生成最优非线性多变量控制流程所必需的。典型例子如TCP协议的拥塞控制.