Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3319280
  • 博文数量: 631
  • 博客积分: 10716
  • 博客等级: 上将
  • 技术积分: 8397
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-01 22:35
文章分类

全部博文(631)

文章存档

2020年(2)

2019年(22)

2018年(4)

2017年(37)

2016年(22)

2015年(1)

2013年(12)

2012年(20)

2011年(19)

2010年(20)

2009年(282)

2008年(190)

分类:

2009-09-06 19:18:01

本系列文章由三部分组成,重点介绍中央处理器 (CPU) 性能和监视的各个方面。本系列文章的第一部分概述了有效监视 CPU 的方法,讨论性能优化的方法,并从正反两方面考虑可能影响性能的因素。本系列文章的第一部分虽然详细说明了一些命令,但第二部分将更集中于实际 CPU 系统监视的细节,以及分析趋势和结果。第三部分则专注于通过主动控制线程使用和其他方法在最大程度上优化您的 CPU 性能。在整个系列文章中,我还将详细说明 AIX® CPU 性能优化和监视方面的各种最佳实践。

作为一名 AIX 管理员,您应该已经了解性能优化的一些基础知识。您很可能已经在使用各种命令,如 vmstattopas,并且熟悉识别占用大量 CPU 资源的进程的方法。有一点您可能并不了解,CPU 性能优化不仅仅是关于运行某些命令,它还涉及主动监视您的系统,特别是在不存在性能问题时。本文介绍 CPU 性能优化的方法,并提供经过时间验证的步骤,可以帮助您完成整个优化过程。在本文中,我将介绍您可能希望使用的一些监视工具,概述 POWER 芯片和可能会影响性能的考虑因素。

即使对于大多数资深管理员来说,虚拟化环境中的性能也带来了一种挑战,因此我还会详细说明虚拟化环境中的特定问题,包括同步多线程 (SMT)、虚拟处理器以及 POWER Hypervisor。我还将讨论在调整 CPU 的过程中需要特别关注的领域,包括调整调度程序、平衡系统负载,以及更改调度程序的算法以优化优先级公式。在调查性能问题时,从监视 CPU 使用率的统计数据入手。持续观察系统的性能非常重要,这是因为需要对过载的系统数据与正常使用的数据(作为基准)进行比较。因为 CPU 是系统中最快的组件,因此如果 CPU 使用率使 CPU 保持 100% 忙碌,那么也会影响系统范围的性能。如果发现系统使 CPU 保持 100% 忙碌,则需要调查导致这种情况发生的进程。AIX 提供了许多分别针对系统和进程(或同时针对系统和进程)的跟踪和分析工具。在 CPU 受限的系统中,所有处理器都是 100% 忙碌的,并且一些作业可能正处在运行队列中等待 CPU 时间。通常来说,如果某个系统的 CPU 是 100% 忙碌,并且相对于 CPU 的数目来说拥有大规模的运行队列,以及具有更为频繁的上下文切换,那么该系统很有可能成为 CPU 受限系统。这是快捷但非恰当的判断方法,并且我敢确定您会发现更多的判断方法。

在本部分中,我们将了解几种 AIX 优化的方法。

在优化乃至启动监视之前,必须先建立一个基准。基准是当系统运行良好时的情况快照。基准不应该仅仅捕获性能类型的统计数据,还应该记录系统的实际配置(内存大小、CPU 数量以及硬盘容量)。如果不记录系统配置,则无法进行同类比较。这在分区系统中尤为重要,您可以在极短时间内进行动态逻辑分区 (DLPAR)。要得到适当的基准,您需要确定监视所使用的工具。有许多可供您在 AIX 5.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 毫秒)。时间片调整参数允许用户指定时间片长度增加的时钟计时数。



                            
    # schedo -a | grep timeslice 
                         timeslice = 1
    

  • 增加资源——添加更多的 CPU,或者在虚拟化环境中重新配置您的逻辑分区 (LPAR)。这可能包括设置无上限分区或向现有分区添加更多的虚拟处理器。适当地虚拟化您的分区环境有助于提高物理资源使用率,减少特定 LPAR 上的 CPU 瓶颈,以及减少任务不繁忙的 LPAR 上的空闲容量的开销。

其他一些 CPU 调整命令包括 smtctbindintcpbindprocessor

现在必须再次逐步完成此过程,从压力测试和监视部分的第二步开始。只有通过重复测试和持续监视您的系统,才能确定调整是否确实起作用。我了解一些管理员仅仅是基于针对特定应用程序的最佳实践调整某些参数,然后就开始进行其他工作了。最糟糕的事情莫过于此。首先,在其他环境中有效的调整也许并不适合您的环境。更重要的是,如果不观察数据,您如何能确实了解所作的调整是否有助于解除瓶颈?再次重申,AIX 性能优化是动态的过程,为了切实获得成功,您需要持续监视您的系统,而这只有在建立基准和 SLA 之后才能实现。如果不能定义运行良好的系统的行为,那么您如何能够定义运行不佳的系统的行为?如果等到您接到前面提到过的电话才进行这些工作,恐怕为时已晚。

POWER 体系结构表示带有增强的 Risc 功能的“功率优化”,并且是当今 IBM 中型服务器所使用的处理器。它是 801 CPU 的衍生产品,也是第二代基于 RISC 的处理器。它最初于 1990 年推出,用于支持 UNIX RS6000® 系统。POWER4 是首款 64 位对称多处理器,于 2001 年发布。它成为 IBM Regatta 服务器的内在驱动力量,并支持逻辑分区。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.9 MB,10 路集相关
  • 改进的 L3 缓存设计
  • 允许 L2 缓存更高的未命中率
  • 避免在芯片结构之间通信
  • 芯片上 L3 目录和内存控制器
  • 芯片上 L3 目录可以减少发生 L2 未命中之后的离片延迟
  • 改进的预取算法
  • 增强的性能
  • SMT
  • 对微分区的硬件支持

也许 POWER5 处理器的最重要创新包括对微分区和 SMT 的支持,这同样需要得到 AIX 5L Version 5.3 的支持。微分区提供在多个分区之间共享单个处理器的能力。这些分区被称为共享处理器分区。当然,基于 POWER5 的系统继续支持具有专用处理器的分区,这类分区不与其他分区共享单个物理处理器。

在共享分区环境中,POWER Hypervisor 为共享分区调度和分配来自一组物理处理器的处理器权限。该物理处理器集合被称为共享处理器池。处理器权限在每轮 Hypervisor 的调度循环中进行分配。在每个轮次中,分区消耗或放弃被授予的处理器权限。图 1 显示了在微分区环境中的共享和专用分区的示例。



在微分区环境中的共享和专用分区的示例

SMT 能够在单个物理处理器上并行调度来自多个硬件线程的指令。在 AIX 5L Version 5.3 中,使用一个物理处理器创建的专用分区实际上被默认配置为逻辑 2 路。从本质上讲,两个硬件线程实际上可以同时在一个物理处理器中运行。虽然存在一些独立环境,在其中调整 SMT 可能对性能造成负面影响,但是 SMT 在大多数情况下都是最佳选择,特别是在整体吞吐量比单个线程的吞吐量更重要时。作为 POWER5 的独特双核设计和对 SMT 支持的结果,一个 POWER5 芯片对于操作系统实际上表现为 4 路微处理器。使用 SMT 技术的处理器可以在单个周期中发出多个来自不同代码路径的指令。图 2 是 DCM 的图示,清晰地显示了 SMT 和芯片自身的关系。



双芯片模块

让多个线程在不同的 CPU 上面运行允许有效利用 IBM SMT 技术。当系统处于 SMT 模式下时,处理器可以从多个线程中获取指令。除 POWER5 体系结构之外,SMT 的概念还基于在同一时间内任何单个线程都不能使用所有的处理器执行单元。POWER5 设计实现了在每个芯片的内核中提供 2 路 SMT。因此,每个物理处理器内核可提供两个虚拟处理器。SMT 所产生的最大收益体现在特定的商业环境中,其中单个事务的处理速度的重要性低于可执行的事务总数的重要性。此外,SMT 增加了大型工作集(如数据库和 Web 服务器)的负载吞吐量。通常来说,SMT 预计会带来约 30% 的性能提升。

SMT 实现如何与 AIX 调度程序相关?由于在 4 路分区中,内核可以将两个硬件线程看作是单独的逻辑处理器,因此调度程序会让进程运行于同一处理器内核的两个硬件线程中,从而导致另外一个处理器内核处于空闲。因为 POWER5 能识别多线程,因此它可以区分相同或不同处理器上的线程。调度程序实际上优先将线程分派到主线程。当启用时,硬件可以在专用分区上的单个线程和 SMT 之间进行动态切换。在共享分区上可以使用 smtctl 进行手动切换。要查看处理器,可以使用以下命令:



                

//To view all processors (logical and physical):

# bindprocessor -q  
The available processors are:  0 1 2 3

//To view the physical processors

# bindprocessor -s 0
The available processors are:  0 2

//To view the SMT enables processors.
# bindprocessor -s 1
The available processors are:  1 3

IBM p5 系统虚拟化的内在技术源自一片被称为 POWER Hypervisor 的固件,它位于闪存中。该固件执行 POWER5 处理器的虚拟化和配置任务,以及为 IBM p5 服务器上并发运行的多达 254 个分区提供必要的虚拟化支持。POWER Hypervisor 占用一些系统处理器和内存资源。它对于性能的影响相对于大多数负载来说都非常微小,但是这种影响随着页面映射活动量的增加而提高。只有考虑到 Hypervisor 才能进行实际的优化。在早期版本中,当取消分区上限时通常需要考虑限制虚拟处理器的数量。这是由使用虚拟处理器所带来的开销造成的。从 AIX 5.4 ML3 开始,AIX 引入了虚拟处理器合并。虚拟处理器合并是指允许空闲虚拟处理器睡眠,并且仅在需要满足负载需求时才唤醒。然后将这些虚拟处理器的权限基于需求重新分配给位于共享处理器池中的客户分区的其他虚拟处理器。参数是 vpm_xvcpus,可以使用 schedo 对其进行更改,并且默认为启用。

在共享分区环境中,您需要了解在每段有权使用的处理器时间中都存在一个未使用的时间片。当虚拟处理器或 SMT 线程变为空闲时,它能够将处理器周期还给 Hypervisor,然后 Hypervisor 可以将未使用的处理器周期分派给其他作业。为了在处理器线程级别上收集 CPU 使用情况(在 SMT 环境中),POWER5 体系结构已经实现了新的寄存器,它被称为处理器使用资源寄存器(Processor Utilization Resource Register,PURR)。每个线程都有自己的 PURR。这些单元与 TB 寄存器相同,并且两个线程的 PURR 值的总和等于 TB 寄存器的值。度量处理器使用率的更多传统方法在 SMT 和 SPLAR 环境中倾向于生成错误的结果,这就是 PURR 寄存器针对处理器使用率提供更准确的真实度量的原因。

由于增加了 SMT、微分区以及动态更改某些参数的能力,因此有必要对旧工具进行一些实际更改。如果在微分区环境中启用了 SMT,vmstatiostatsar 命令将自动使用新的基于 PURR 的数据。在 AIX 5L Version 5.3 中,lparstat 命令显示有关大量 POWER Hypervisor 调用的 Hypervisor 统计数据。使用 -h 标志可将汇总的 POWER Hypervisor 统计数据添加到缺省的 lparstat 输出中(请参见清单 3)。



                
# lparstat -h 1 5

System configuration: type=Dedicated mode=Capped smt=On lcpu=4 mem=3920 

%user  %sys  %wait  %idle  %hypv hcalls
-----  ----  -----  -----  ----- ------
  0.0   0.7    0.0   99.3   44.4 5933918 
  0.4   0.3    0.0   99.3   44.9 5898086 
  0.0   0.1    0.0   99.9   45.1 5930473 
  0.0   0.1    0.0   99.9   44.6 5931287 
  0.0   0.1    0.0   99.9   44.6 5931274 
#

性能优化是系统管理中最具挑战性的工作之一。在可以开始系统优化之前,首先必须了解并遵循性能优化方法,其中包括为您的系统建立基准,监视以及执行有效的压力测试。由 AIX 5.3 和 POWER5 体系结构驱动的 System p™ 服务器包含强大的新功能,可帮助您调整您的 CPU 子系统。我已经讨论了 POWER5 的一些虚拟化功能,其中包括微分区和 Hypervisor。许多命令都针对 POWER5 体系结构中的虚拟化和 Hypervisor 进行了增强。本系列文章的第 1 部分还介绍了一些命令和实用工具,可用于监视和优化性能。在后续部分,我将详细说明这些实用工具,以帮助您确定系统的瓶颈和优化服务器。

阅读(1182) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~