手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

改善Linux内核和可伸缩性适应企业环境

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

假如没有可用的外部公开结果,则能够尝试使用内部结果。还能够尝试和其他操作系统进行比较。给定具备竞争性的数据和基线,然后选择 UP 和 SMP 机器的性能目标。

最后,能够声明应用程式变更了目标。例如,假如知道某个应用程式采用异步 I/O 方式效率不高,则能够通过假定改变 I/O 方法,公开该性能目标。

调优、测量和分析

在做任何测量之前,需要调优硬件和软件配置。调优和测量是个不断循环的调优和测量过程。他涉及了系统组件(譬如 CPU 利用率和内存使用率)的测量,还可能涉及系统硬件参数、系统资源参数和中间件参数的调整。调优是性能分析的第一步中的环节。没有调优,测量出的结果可能会使人产生误解;即,这些结果可能不会指出内核的限制,而显示出别的问题。

根据运行规则来运行基准测试程式,从而能够根据已定义的性能度量来测量性能和可伸缩性。对给定机器计算 SMP 可伸缩性时,能够选择根据 UP 内核的性能来计算此度量值,也能够选择根据 SMP 内核(其中处理器数目设为 1 ― 一个处理器)的性能来计算他。我们决定使用 UP 测量来计算 SMP 可伸缩性,这样能够更精确地反映 SMP 内核性能的改进。

使用前面确定下来的 Linux 内核版本来测量基线。对于大多数基准测试程式,需要测量 UP 和 SMP 基线。对于少数基准测试程式,只需测量 8 路 SMP 性能,因为收集 UP 性能信息受到时间限制。大多数其他基准测试程式测量在特定时间段内完成的工作量,在 UP 上的测量时间不超过在 8 路 SMP 上的测量时间。

分析 SUT(被测系统)的性能和可伸缩性所需的第一步是理解被测试的基准测试程式和工作负载。最初的性能分析是针对经过调优的系统而作出的。有时,分析揭示了对调优参数的其他修改。

对 SUT 性能和可伸缩性的分析需要一组性能工具。我们的策略是尽可能地使用开放源码社区(Open Source community,OSC)的工具。这使我们能够将分析数据在 OSC 上公开,以说明性能和可伸缩性上的瓶颈。这也使 OSC 中的成员能够用工具重复我们的结果,或在用该工具对另一个应用程式做完试验之后,能够理解这些结果。假如研发出专门的性能工具来更好地理解某个具体性能瓶颈,则随后通常会将此专门的性能工具在 QSC 上共享。这些专门的性能工具通常是一些简单工具,他们为特定的 Linux 内核组件提供了测试手段。我们所使用的性能工具包括:

/proc 文档系统;

meminfo、slabinfo、中断、网络状态、I/O 状态等;

SGI 的 lockmeter;

来自 SMP 锁分析;

SGI 的内核概要分析器(kernprof);

基于时间的概要分析、基于性能计数器概要分析、仅关于内核空间的带注释的调用图(annotated call graph,ACG);IBM 跟踪工具。

针对用户空间和系统空间的单步(mtrace)并同时基于时间和基于性能计数器的概要分析。

研发专门的性能工具,以进一步理解系统具体某个方面。

例如:

sstat:收集调度程式统计信息。

schedret :确定哪些内核功能因调查空闲时间而阻塞了。

acgparse:后处理 kernprof ACG,复制进/出工具,确定缓冲区的调整、复制大小和复制进/出算法的 CPU 利用率。

然后使用性能分析数据来确定性能和可伸缩性的瓶颈。需要对 SUT 有宽泛的理解,并要对基准测试程式所着重的 Linux 内核组件有更具体的理解,从而理解性能瓶颈存在于何处。还必须理解造成瓶颈的 Linux 内核源代码。此外,我们需要和 LTC Linux 内核研发团队和 OSC(开放源码社区)紧密合作,以便研发补丁来修正瓶颈。

退出策略

对 Linux 内核性能的评估可能需要运行基准测试程式,然后分析结果来确定性能和可伸缩性的瓶颈,接着将补丁集成进 Linux 内核来解决任何这些瓶颈,最后再次运行该基准测试程式,这是个周而复始的过程。作为一名性能团队成员,要和 Linux 内核研发团队或 OSC 通力合作,通过在 OSC 查找现有的补丁或研发新的补丁来获取补丁。有一组用来确定何时 Linux 已“足够好了”和能够结束该过程的标准。

首先,假如我们已达到了目标,并且,针对某个具体基准测试程式,不存在需要解决的任何突出的 Linux 内核问题(解决这些问题能够很大程度地改善 Linux 内核性能),则我们能够声称 Linux 已“足够好了”,能够转至其他问题了。其次,假如我们经历了几次性能分析循环之后,仍然有突出的瓶颈问题,则我们需要考虑继续该过程所需研发成本和任何其他性能上改进所获得的好处之间的权衡。假如相对于任何可能获得的性能改进而言,研发成本过高,则我们不要继续分析下去,并清楚地说明相应的根本原因。

在这两种情形中,接着我们复查任何其他和 Linux 内核相关的突出问题(我们希望解决这些问题),评价能够用来解决这些内核组件问题的相应的基准测试程式,检查任何可能和该问题相关的数据,然后决定根据收集来的信息来进行对内核组件(或组件集合)的分析。

基准测试程式

这一节将描述分析出的瓶颈和我们这一套基准测试程式所着重的相关内核组件。此外,对于 Linux 性能团队所使用的一些基准测试程式,还将描述性能结果和分析。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!