zl程序教程

您现在的位置是:首页 >  系统

当前栏目

Linux性能优化1.2 性能调查概要

Linux性能 优化 1.2 调查 概要
2023-09-11 14:16:03 时间


本节列出了开始性能调查时的几个重要步骤。由于终极目标是解决问题,因此最好的方法是在你接触性能工具之前就开始研究问题。遵循如下特定步骤是解决问题的有效方法,并且不会浪费宝贵的时间。

1.2.1 找到指标、基线和目标

性能调查的第一步就是确定当前的性能,并明确其应提升的程度。如果你的系统明显性能不佳,你就可以确定值得花时间进行研究。但是,如果系统性能接近其峰值,那么就不值得研究。明确性能峰值有助于你设置合理的性能期望值,并能给你一个性能目标,这样你就知道何时应该停止优化。你可能总是没有目标地时不时对系统做一点调整,这会浪费大量的时间,只为得到一些额外的性能,即使你可能并不真的需要它们。

1.2.1.1 确定指标

要想知道什么时候结束优化,你必须为系统自行确立或是使用已发布的指标。指标是一种客观的度量,用于指示系统的执行情况。例如,如果你要优化一个Web服务器,你就可以选择“每秒服务的Web请求数”。如果你没有一个客观的途径来度量性能,那么在调整系统的时候,你几乎无法确定是否取得了进展。

1.2.1.2 确定基线

在你明确了如何度量特定系统或应用程序的性能之后,确定当前的性能等级就很重要了。在调整和优化之前,运行应用程序并记录其性能,这就是基线值,它是性能调查的起点。

1.2.1.3 确定目标

在你确定了性能指标和基线后,现在需要确定一个目标,这个目标引导你完成性能追踪。你可以无限期地调整系统,花费越来越多的时间来获得更加好一点的性能。如果你制定了目标,那么你就会知道什么时候该结束整个过程。要选择合理的目标,下面是一些好的起点:

寻找其他有相同配置的人,询问他们的性能指标—这是理想状态。如果你能发现某人拥有相似的系统和更好的性能,则不仅能为你的系统选定目标,还能与这个人一起工作:他可以确定为什么你的配置更慢,以及该配置有何不同。在研究问题时,使用另一个系统作为参照被证明是非常有用的。

查找工业标准测试程序的结果—许多网站都比较了计算机系统各方面的基准测试结果。有些基准测试结果是经过异常的努力得到的,因此,它们可能不能代表真实的使用情况。不过,很多基准测试网站给出了特定结果使用的配置,这些配置信息可以为你调整系统提供线索。

在不同的OS或应用程序上使用你的硬件—可能要在你的系统上运行不同的软件以实现相似的功能。比如,如果你有两个不同的Web服务器,其中一个运行较慢,那么就试试另一个,看它的性能是否好一些。或者,在另一个不同的操作系统上运行同一个应用程序。如果上述任一情况下系统执行表现得更好一些,那么,你就会知道原来的应用程序还有改进的空间。

如果用现有的性能信息来指导你的目标,那么你有更好的机会来选择一个积极的,但也并非不可能达到的目标。

抓住低处的果实

性能追踪的另一种方法是选择在特定时间段内进行追踪,而不是选择一个目标,在这段时间内尽可能地对性能进行优化。如果应用程序从未被优化过,那么通常在给定工作负载下,会有一些问题相对容易解决。这些容易被修复的问题称为“低处的果实”。

为什么是“低处的果实”?打个比方,将性能调查想象成你饿了,正站在一棵苹果树下。你会采摘最靠近地面,也是你最容易够到的苹果。这些低处的苹果与果树稍高处较难够到的苹果一样能够填饱你的肚子,但是采摘它们只需花费很少的力气。相似的,如果你要在有限的时间内优化一个应用程序,你可能会试着修复那些最简单明显的问题(低处的果实),而不是做一些更困难的、根本性的变化。

1.2.2 追踪近似问题

使用性能工具为确定问题原因打开第一个口子。通过初始的粗略尝试,你能对问题形成大致的看法。这个简单切口的目的就是收集足够的信息传递给程序的其他用户和开发者,以便他们提出意见和建议。这里非常重要的一点是要有良好的书面记录来解释你认为问题是怎样的,以及什么样的测试使你得出了这个结论。

1.2.3 查看问题是否早已解决

你的下一个目标是确定是否有其他人已经解决了这个问题。性能调查可能是一个冗长且费时的事情,如果你正好可以利用其他人的工作,那么在你开始之前就将抢占先机。因为你的目的就是要改进系统性能,所以解决性能问题最好的办法就是依靠其他人已有的成果。

尽管你很可能对性能问题的具体建议持保留态度,但是这些建议具有启发性,可以使你了解到其他人可能已经研究过相似的问题,他们是如何试着解决问题的,以及他们是否成功了。

下述这些地方也能寻求性能建议:

在Web上查找相似的错误信息/问题—这通常是我调查的第一步。Web搜索常常会揭示很多与应用程序以及你正在查找的具体错误情况相关的信息。它们还可以指向其他用户所尝试的系统优化,还可能提示哪些有作用、哪些没有作用。成功的搜索可以产生好几页能够直接用于你的性能问题的信息。要发现有相似性能问题的人,使用Google或Google论坛搜索是非常有用的方法。

在应用程序邮件列表上求助—大多数流行或公开开发的软件都有软件使用者的邮件列表,这是寻找性能问题答案的绝佳地方。读者和贡献者通常在软件运行以及保持其性能良好方面有经验。搜索一下邮件列表的存档,因为有人可能会问过相同的问题。而随后对原始消息的回复也许就描述了一个解决方案。如果没有这样的回复,就向最初提出这个问题的人发邮件,询问他是否找到了解决方法。如果这样也不行,或是没有其他人提出过相似的问题,那么在列表上发邮件说明你的问题,幸运的话,也许已经有人把这个问题解决了。

向开发人员发邮件—很多Linux软件在文档的某个位置包含了开发者的e-mail地址,如果在互联网和邮件列表中搜索失败,你可以尝试直接给开发者发邮件。开发人员通常非常忙,不见得有时间回复邮件。但是,相比其他人,他们更加了解软件,如果你能向开发者提供对性能问题条理清晰的分析,并愿意和他一起工作,那么开发者也许能帮助你。虽然开发者关于性能问题原因的想法不见得正确,但是他们可能会给你指出一个富有成果的方向。

与内部开发人员交谈—最后,如果产品是内部开发的,你就可以与内部开发人员通电话或发邮件。这和与外部开发者联系几乎是一样的,只不过内部人员可能会在你的问题上投入更多时间,或是给你指出内部的知识库。

依靠其他人的工作,你也许在性能调查开始之前就能解决问题。至少,你有可能找到一些有希望的方法来调查,所以,最好总是看看别人有什么发现。

1.2.4 项目开始(启动调查)

现在你已经详细了解了别人解决问题的可能性,接下来必须开始性能调查了。后续章节将详细介绍工具和方法,但是现在还有一些提示能让你的工作效果更好:

分离问题—如果可能的话,删去任何运行于被调查系统的多余的程序或应用。运行许多不同应用程序的系统,其负载较重,会影响性能工具收集信息的准确性,并最终将你引导到错误的方向。

利用系统差异发现原因—如果你能发现一个相似的系统具有更好的性能,那么这对问题调试将是一个有力的帮助。使用性能工具的问题之一就是,你不一定有好的方法知道性能工具的结果是否指明了问题。如果你有一个好的系统和一个差的系统,你就可以在这两个系统上运行同样的性能工具,并比较它们的结果。如果结果不同,就可以通过找出系统差异来确定问题的原因。

一次只改变一件事—这点非常重要。要真正确定问题出在哪儿,一次只能有一个变化。这可能会很花时间,并让你运行多个不同的测试,但它的确是发现你是否解决了问题的唯一途径。

始终在优化后重新测量—如果你稍稍调整了系统,那么在调整后对所有的事情重新进行测量是很重要的。当你开始修改系统配置时,所有之前生成的性能信息可能不再有效。通常,在你解决一个性能问题时,别的问题会随之而来。新问题可能与老问题有着极大的不同,因此,你真的需要重新运行性能工具来确保正在调查的问题没有出错。

遵循这些建议能帮助你避免误导,并有助于确定性能问题的原因。

1.2.5 记录,记录,记录

如前所述,记录你所做的事情以便之后回顾和审查,这一点确实很重要。如果你已经开始追踪性能问题,那么在你的脑海中就会有大量新增的笔记和URL。它们可能杂乱无章,混成一团,但现在你明白它们的意思,知道它们的组织结构。在解决问题后,花些时间重写你的发现以及为什么你认为这么做是对的。包括测量得到的性能结果和做过的实验。虽然看上去工作量很大,但却是非常值得的。几个月后,曾经做过的测试很容易就会被忘记,如果没有将结果记录下来,最终你可能会重做测试。如果在这些测试还记忆犹新时撰写了报告,你就不用重做这些工作,而只需要依靠这些记录就行。