AIX性能优化.docx
《AIX性能优化.docx》由会员分享,可在线阅读,更多相关《AIX性能优化.docx(82页珍藏版)》请在冰豆网上搜索。
AIX性能优化
最近在网上看到一篇关于aix性能监控与优化方面的资料,顺便整理了一下,把它发到LU上来,希望对感兴趣的朋友能有些帮助。
++++++++++++++++++++++++++++++++++++++++++++++++++++++
CPU监控与性能优化CPU性能监控与优化1
关于本系列
本系列文章由三部分组成,重点介绍中央处理器(CPU)性能和监视的各个方面。
本系列文章的第一部分概述了有效监视CPU的方法,讨论性能优化的方法,并从正反两方面考虑可能影响性能的因素。
本系列文章的第一部分虽然详细说明了一些命令,但第二部分将更集中于实际CPU系统监视的细节,以及分析趋势和结果。
第三部分则专注于通过主动控制线程使用和其他方法在最大程度上优化您的CPU性能。
在整个系列文章中,我还将详细说明AIX®CPU性能优化和监视方面的各种最佳实践。
引言
作为一名AIX管理员,您应该已经了解性能优化的一些基础知识。
您很可能已经在使用各种命令,如vmstat
或topas,并且熟悉识别占用大量CPU资源的进程的方法。
有一点您可能并不了解,CPU性能优化不仅仅是关于运行某些命令,它还涉及主动监视您的系统,特别是在不存在性能问题时。
本文介绍CPU性能优化的方法,并提供经过时间验证的步骤,可以帮助您完成整个优化过程。
在本文中,我将介绍您可能希望使用的一些监视工具,概述POWER芯片和可能会影响性能的考虑因素。
即使对于大多数资深管理员来说,虚拟化环境中的性能也带来了一种挑战,因此我还会详细说明虚拟化环境中的特定问题,包括同步多线程(SMT)、虚拟处理器以及POWERHypervisor。
我还将讨论在调整CPU的过程中需要特别关注的领域,包括调整调度程序、平衡系统负载,以及更改调度程序的算法以优化优先级公式。
在调查性能问题时,从监视CPU使用率的统计数据入手。
持续观察系统的性能非常重要,这是因为需要对过载的系统数据与正常使用的数据(作为基准)进行比较。
因为CPU是系统中最快的组件,因此如果CPU使用率使CPU保持100%忙碌,那么也会影响系统范围的性能。
如果发现系统使CPU保持100%忙碌,则需要调查导致这种情况发生的进程。
AIX提供了许多分别针对系统和进程(或同时针对系统和进程)的跟踪和分析工具。
在CPU受限的系统中,所有处理器都是100%忙碌的,并且一些作业可能正处在运行队列中等待CPU时间。
通常来说,如果某个系统的CPU是100%忙碌,并且相对于CPU的数目来说拥有大规模的运行队列,以及具有更为频繁的上下文切换,那么该系统很有可能成为CPU受限系统。
这是快捷但非恰当的判断方法,并且我敢确定您会发现更多的判断方法。
优化方法
在本部分中,我们将了解几种AIX优化的方法。
建立基准
在优化乃至启动监视之前,必须先建立一个基准。
基准是当系统运行良好时的情况快照。
基准不应该仅仅捕获性能类型的统计数据,还应该记录系统的实际配置(内存大小、CPU数量以及硬盘容量)。
如果不记录系统配置,则无法进行同类比较。
这在分区系统中尤为重要,您可以在极短时间内进行动态逻辑分区(DLPAR)。
要得到适当的基准,您需要确定监视所使用的工具。
有许多可供您在AIX5.3中使用的工具,其中一些工具更适用于分区和虚拟化环境(例如,lparstat和mpstat)。
一些更通用的工具通常可用于所有版本的UNIX®,其中包括vmstat、sar和ps。
还有一些AIX专用的实用工具,包括topas、procmon,以及一些部分受支持的工具,如nmon。
如果您已经确定了监视工具,就需要开始收集统计数据和性能度量数据。
这有助于定义给定系统的可接受性能水平。
再次重申,应该在接听可怕的电话之前开始跟踪问题。
您需要了解运行良好的系统所表现的特点。
还应该与相应的应用和功能团队协作确定运转良好的系统的精确定义。
此时,您可以将该定义转换为服务水平协议(SLA),准备征得客户的正式同意。
压力测试和监视
此方法的第二步是压力测试和监视部分。
现在需要监视系统在高峰负载和故障期间的情况。
这有助于准确确定系统的问题所在。
这确实是CPU瓶颈,还是与内存或I/O的关系更为密切?
在此步骤中,我喜欢使用多种监视工具来帮助验证所发现的问题。
我可能使用交互式工具(如vmstat),然后使用捕获工具(如nmon)来帮助我跟踪数据历史记录。
此监视步骤非常关键,因为如果没有准确记录系统运行(特别是承受压力期间)的历史数据,就无法有效地优化任何功能。
此时建立系统的性能策略非常重要。
您可以在监视过程中制定相关措施,并根据历史数据对这些措施进行分析,然后在压力测试阶段进一步分析。
识别瓶颈
对系统进行压力测试和监视的目的是为了确定瓶颈。
若不作出正确诊断,就无法对症下药。
如果系统实际上是CPU受限的,就可以运行其他工具(如trace、curt、splat、tprof和ps)来进一步确定导致瓶颈的实际进程。
还有可能您的系统实际上是内存或I/O受限,而非CPU受限。
修复某个瓶颈可能会导致CPU瓶颈,这是因为系统现在允许CPU以最佳化性能运行,而CPU本身可能没有能力处理额外增加的资源量。
我经常看到这种情况出现,这不一定是一件坏事。
恰恰相反,它最终可以帮助您隔离所有的瓶颈。
您会发现监视和优化系统是一个极具变化的过程,且并非总是可以预测的。
这就是让性能优化变得如此具有挑战性的原因。
优化瓶颈
在您最终确定瓶颈之后,就到了对瓶颈进行调整的时候了。
对于CPU瓶颈,通常有四种解决方案可供选择:
∙平衡系统负载——在不同的期间运行进程,从而更有效地利用每天的24小时。
∙使用nice或renice优化调度程序——可帮助您为运行进程分配不同的优先级,以避免占用大量CPU资源。
∙使用schedo调整调度程序算法,从而优化优先级公式——可以使用schedo调整AIX中的各种参数。
例如,schedo
命令可用于更改操作系统在调用调度程序以选择运行其他进程之前允许给定进程运行的时间(时间片)。
此时间间隔的默认值为单个指令周期(10毫秒)。
时间片调整参数允许用户指定时间片长度增加的时钟计时数。
清单1.时间片调整参数
#schedo-a|greptimeslice
timeslice=1
∙增加资源——添加更多的CPU,或者在虚拟化环境中重新配置您的逻辑分区(LPAR)。
这可能包括设置无上限分区或向现有分区添加更多的虚拟处理器。
适当地虚拟化您的分区环境有助于提高物理资源使用率,减少特定LPAR上的CPU瓶颈,以及减少任务不繁忙的LPAR上的空闲容量的开销。
其他一些CPU调整命令包括smtct、bindintcp
和bindprocessor。
重复
现在必须再次逐步完成此过程,从压力测试和监视部分的第二步开始。
只有通过重复测试和持续监视您的系统,才能确定调整是否确实起作用。
我了解一些管理员仅仅是基于针对特定应用程序的最佳实践调整某些参数,然后就开始进行其他工作了。
最糟糕的事情莫过于此。
首先,在其他环境中有效的调整也许并不适合您的环境。
更重要的是,如果不观察数据,您如何能确实了解所作的调整是否有助于解除瓶颈?
再次重申,AIX性能优化是动态的过程,为了切实获得成功,您需要持续监视您的系统,而这只有在建立基准和SLA之后才能实现。
如果不能定义运行良好的系统的行为,那么您如何能够定义运行不佳的系统的行为?
如果等到您接到前面提到过的电话才进行这些工作,恐怕为时已晚。
CPU
POWER体系结构表示带有增强的Risc功能的“功率优化”,并且是当今IBM中型服务器所使用的处理器。
它是801CPU的衍生产品,也是第二代基于RISC的处理器。
它最初于1990年推出,用于支持UNIXRS6000®系统。
POWER4是首款64位对称多处理器,于2001年发布。
它成为IBMRegatta服务器的内在驱动力量,并支持逻辑分区。
POWER5体系结构于2003年推出,每个处理器包含2.76亿个晶体管。
POWER5基于130纳米铜和绝缘硅(SOI)工艺,并具有以下特性:
∙芯片多处理
∙更大的缓存
∙芯片上集成内存控制器
∙SMT
∙高级电源管理
∙改进的Hypervisor技术
POWER5的设计支持多达256个LPAR,并且可同时用于它的pSeries®和iSeries™服务器。
这一采用SMT技术的双核处理器是利用SOI设备和铜互连技术制造的。
SOI技术用于减少器件电容和提高晶体管性能。
POWER5实际上是IBM第二代双核微处理器芯片,并且为支持更细粒度和更灵活的分区提供了创新和改进的功能。
此外,它还分别使用双芯片模块(DCM)和多芯片模块(MCM)作为其中端服务器和高端服务器的基本构建块。
POWER5芯片的一些更重要的创新还包括:
∙增强的内存子系统
∙改进的L1缓存设计
∙新的替换算法(LRU与FIFO)
∙更大的L2缓存
∙1.9MB,10路集相关
∙改进的L3缓存设计
∙允许L2缓存更高的未命中率
∙避免在芯片结构之间通信
∙芯片上L3目录和内存控制器
∙芯片上L3目录可以减少发生L2未命中之后的离片延迟
∙改进的预取算法
∙增强的性能
∙SMT
∙对微分区的硬件支持
也许POWER5处理器的最重要创新包括对微分区和SMT的支持,这同样需要得到AIX5LVersion5.3的支持。
微分区提供在多个分区之间共享单个处理器的能力。
这些分区被称为共享处理器分区。
当然,基于POWER5的系统继续支持具有专用处理器的分区,这类分区不与其他分区共享单个物理处理器。
在共享分区环境中,POWERHypervisor为共享分区调度和分配来自一组物理处理器的处理器权限。
该物理处理器集合被称为共享处理器池。
处理器权限在每轮Hypervisor的调度循环中进行分配。
在每个轮次中,分区消耗或放弃被授予的处理器权限。
图1显示了在微分区环境中的共享和专用分区的示例。
图1.在微分区环境中的共享和专用分区的示例
SMT
SMT能够在单个物理处理器上并行调度来自多个硬件线程的指令。
在AIX5LVersion5.3中,使用一个物理处理器创建的专用分区实际上被默认配置为逻辑2路。
从本质上讲,两个硬件线程实际上可以同时在一个物理处理器中运行。
虽然存在一些独立环境,在其中调整SMT可能对性能造成负面影响,但是SMT在大多数情况下都是最佳选择,特别是在整体吞吐量比单个线程的吞吐量更重要时。
作为POWER5的独特双核设计和对SMT支持的结果,一个POWER5芯片对于操作系统实际上表现为4路微处理器。
使用SMT技术的处理器可以在单个周期中发出多个来自不同代码路径的指令。
图2是DCM的图示,清晰地显示了SMT和芯片自身的关系。
图2.双芯片模块
让多个线程在不同的CPU上面运行允许有效利用IBMSMT技术。
当系统处于SMT模式下时,处理器可以从多个线程中获取指令。
除POWER5体系结构之外,SMT的概念还基于在同一时间内任何单个线程都不能使用所有的处理器执行单元。
POWER5设计实现了在每个芯片的内核中提供2路SMT。
因此,每个物理处理器内核可提供两个虚拟处理器。
SMT所产生的最大收益体现在特定的商业环境中,其中单个事务的处理速度的重要性低于可执行的事务总数的重要性。
此外,SMT增加了大型工作集(如数据库和Web服务器)的负载吞吐量。
通常来说,SMT预计会带来约30%的性能提升。
SMT实现如何与AIX调度程序相关?
由于在4路分区中,内核可以将两个硬件线程看作是单独的逻辑处理器,因此调度程序会让进程运行于同一处理器内核的两个硬件线程中,从而导致另外一个处理器内核处于空闲。
因为POWER5能识别多线程,因此它可以区分相同或不同处理器上的线程。
调度程序实际上优先将线程分派到主线程。
当启用时,硬件可以在专用分区上的单个线程和SMT之间进行动态切换。
在共享分区上可以使用smtctl
进行手动切换。
要查看处理器,可以使用以下命令:
清单2.查看处理器
//Toviewallprocessors(logicalandphysical):
#bindprocessor-qTheavailableprocessorsare:
0123//Toviewthephysicalprocessors#bindprocessor-s0Theavailableprocessorsare:
02//ToviewtheSMTenablesprocessors.#bindprocessor-s1Theavailableprocessorsare:
13
Hypervisor和虚拟分区
IBMp5系统虚拟化的内在技术源自一片被称为POWERHypervisor的固件,它位于闪存中。
该固件执行POWER5处理器的虚拟化和配置任务,以及为IBMp5服务器上并发运行的多达254个分区提供必要的虚拟化支持。
POWERHypervisor占用一些系统处理器和内存资源。
它对于性能的影响相对于大多数负载来说都非常微小,但是这种影响随着页面映射活动量的增加而提高。
只有考虑到Hypervisor才能进行实际的优化。
在早期版本中,当取消分区上限时通常需要考虑限制虚拟处理器的数量。
这是由使用虚拟处理器所带来的开销造成的。
从AIX5.4ML3开始,AIX引入了虚拟处理器合并。
虚拟处理器合并是指允许空闲虚拟处理器睡眠,并且仅在需要满足负载需求时才唤醒。
然后将这些虚拟处理器的权限基于需求重新分配给位于共享处理器池中的客户分区的其他虚拟处理器。
参数是vpm_xvcpus,可以使用schedo对其进行更改,并且默认为启用。
在共享分区环境中,您需要了解在每段有权使用的处理器时间中都存在一个未使用的时间片。
当虚拟处理器或SMT线程变为空闲时,它能够将处理器周期还给Hypervisor,然后Hypervisor可以将未使用的处理器周期分派给其他作业。
为了在处理器线程级别上收集CPU使用情况(在SMT环境中),POWER5体系结构已经实现了新的寄存器,它被称为处理器使用资源寄存器(ProcessorUtilizationResourceRegister,PURR)。
每个线程都有自己的PURR。
这些单元与TB寄存器相同,并且两个线程的PURR值的总和等于TB寄存器的值。
度量处理器使用率的更多传统方法在SMT和SPLAR环境中倾向于生成错误的结果,这就是PURR寄存器针对处理器使用率提供更准确的真实度量的原因。
由于增加了SMT、微分区以及动态更改某些参数的能力,因此有必要对旧工具进行一些实际更改。
如果在微分区环境中启用了SMT,vmstat、iostat
和sar
命令将自动使用新的基于PURR的数据。
在AIX5LVersion5.3中,lparstat
命令显示有关大量POWERHypervisor调用的Hypervisor统计数据。
使用-h
标志可将汇总的POWERHypervisor统计数据添加到缺省的lparstat输出中(请参见清单3)。
清单3.使用-h标志生成的lpartstat输出
#lparstat-h15Systemconfiguration:
type=Dedicatedmode=Cappedsmt=Onlcpu=4mem=3920%user
%sys
%wait
%idle
%hypvhcalls-----
----
-----
-----
-----------
0.0
0.7
0.0
99.3
44.45933918
0.4
0.3
0.0
99.3
44.95898086
0.0
0.1
0.0
99.9
45.15930473
0.0
0.1
0.0
99.9
44.65931287
0.0
0.1
0.0
99.9
44.65931274#
结束语
性能优化是系统管理中最具挑战性的工作之一。
在可以开始系统优化之前,首先必须了解并遵循性能优化方法,其中包括为您的系统建立基准,监视以及执行有效的压力测试。
由AIX5.3和POWER5体系结构驱动的Systemp™服务器包含强大的新功能,可帮助您调整您的CPU子系统。
我已经讨论了POWER5的一些虚拟化功能,其中包括微分区和Hypervisor。
许多命令都针对POWER5体系结构中的虚拟化和Hypervisor进行了增强。
本系列文章的第1部分还介绍了一些命令和实用工具,可用于监视和优化性能。
在后续部分,我将详细说明这些实用工具,以帮助您确定系统的瓶颈和优化服务器。
CPU监控与性能优化2
确定哪些AIX®工具可用于监视给定解决方案的中央处理器(CentralProcessingUnit,CPU),并了解为何某些工具优于其他工具。
本系列的第1部分讨论了优化方法和使用CPU性能优化过程的重要性。
另外还简单介绍了一些在优化存储库时可以使用的性能工具,对POWERCPU进行了简要介绍,并讨论了POWER芯片发展中的体系结构提升如何为Systemp™产品系列的硬件提升做出贡献。
关于本系列
本系列包含三个部分,讨论中央处理器(CPU)性能和监视的各个方面。
本系列的第1部分简单介绍了如何有效地监视CPU,讨论了性能优化的方法,并给出了会对性能造成影响(正面影响或负面影响)的注意事项。
尽管本系列的第1部分已经详细说明了一些命令,但第2部分将更集中于实际CPU系统监视的细节,以及趋势分析和结果。
第3部分重点讨论通过主动控制线程使用和其他方法来最大限度地优化您的CPU性能。
在整个系列文章中,我还将详细说明AIX®CPU性能优化和监视方面的各种最佳实践。
引言
性能优化显然不只是运行一些命令然后观察结果。
UNIX®管理员需要知道将哪些工具用于何种目的,以及捕获数据的最佳方法是什么。
有时候您可能没有30天时间来通过系统地分析数据确定趋势,而有时候甚至都用不了30分钟就能够准确地判断出您的瓶颈所在。
不管怎么说,这就是CPU监视的主要目的——准确地确定瓶颈。
除非所搜集的数据清楚地表明CPU是瓶颈,否则并不希望进行CPU优化。
事实上,我们经常会发现瓶颈与内存或I/O相关,而不是与CPU相关的问题。
作为AIX管理员,最重要的职责之一就是优化您的系统。
如果不首先监视系统并分析结果,就不能进行优化。
对于长期趋势和短期(接下来数小时内必须完成的工作)问题均是如此。
虽然可以使用特定工具仅对CPU进行分析,但对于给定环境,可能要使用在系统上寻找所有可能瓶颈的工具。
正如您可能已经知道的,CPU是系统中最快的组件。
如果您的CPU是瓶颈,将会对整个系统的性能造成影响。
在我介绍这些工具时,请您注意以下命令已在AIX5.3中进行了增强,允许工具使用AdvancedPowerVirtualization报告有关共享分区的准确统计数据:
mpstat、sar、topas和vmstat。
此外,还对以下基于跟踪的工具进行了更新:
Curt、filemon、netpmon、pprof和splat。
闲话少说,接下来让我们开始着手监视系统。
UNIX通用CPU监视工具
接下来我们将讨论在所有UNIX分发版本(Solaris到AIX)上可用的UNIX通用工具。
虽然有些输出内容根据分发版本不同而有所变化,但大多数标志适用于所有UNIX系统。
这些标志可帮助您动态地收集信息,但我不会依赖其确定历史趋势和进行分析。
我们首先讨论vmstat。
vmstat报告关于进程、内存、分页、被阻塞的I/O及总体CPU活动的信息。
虽然这个工具与虚拟内存相关(vmstat中的vm),但我发现在主机上运行vmstat可以让我快速而准确地确定AIX服务器上发生的情况。
使用vmstat
您刚刚听到了我们非常不愿意听到的抱怨“为什么系统这么慢?
”,需要快速进行分析,以确定可能的瓶颈位置。
vmstat是开始进行此工作的最好工具。
有关运行vmstat的示例,请参见清单1。
清单1.运行vmstat
#vmstat1
Systemconfiguration:
lcpu=2mem=3920MB
kthr memory page faults cpu
----- ----------- ------------------------------------ -----------
r b avm fre re pi po fr sr cy in sy cs ussyidwa
0 0 229367332745 0 0 0 0 0 0 3 198 69 0 099 0
0 0 229367332745 0 0 0 0 0 0 3 33 66 0 099 0
0 0 229367332745 0 0 0 0 0 0 2 33 68 0 099 0
0 0 229367332745 0 0 0 0 0 0 80 306100 0 197 1
0 0 229367332745 0 0 0 0 0 0 1 20 68 0 099 0
0 0 229367332745 0 0 0 0 0 0 2 36 64 0 099 0
0 0 229367332745 0 0 0 0 0 0 2 33 66 0 099 0
0 0 229367332745 0 0 0 0 0 0 2 21 66 0 099 0
0 0 229367332745 0 0 0 0 0 0 1 237 64 0 099 0
0 0 22936