yangjianxv
作者yangjianxv·2016-11-17 16:25
部门总经理·成方金融科技有限公司

性能指标之资源指标 CPU亲和性调整优化

字数 2805阅读 6650评论 0赞 5

本节介绍的内容涉及到如何提高进程与CPU的亲和度、CPU和内存的亲和度、虚拟CPU与物理CPU的亲和度。

1. 绑定进程

对于Dedicated CPU模式,可以采用绑定进程到指定CPU。

2. 调整CPU相关参数

对于Sharing CPU模式,规划LPAR时,不要将CPU entitlement值设置过小。尽量减少Hypervisor动态调整CPU资源的幅度,这样Hypervisor在调度CPU资源的时候,就可以尽量分配相同核上的CPU时间片,同时减少CPU调度时出现的Context Switch操作。即设置LPAR的Desired Processor Unit值,满足分区正常工作的CPU需求。

不要将虚拟CPU(VP)值设置过大,过多的VP不但会影响VP与物理CPU的亲和性,也会影响进程与VP之间的亲和性。

总之,若VP与EC的比值过大,建议缩小二者的比值,降低VP或提高EC。二者的比值最大可以是10,最小为1,IBM官方文档中给出虚拟化平台最佳实践是1.5。但实践证明只要比值超过1,都会有不同程度的性能影响(响应时间方面),如果对响应时间要求非常苛刻的系统,建议比值越小越好,或者可以考虑把Sharing模式改为dedicated模式。

3. Dynamic Platform Optimizer(DPO)

当一台服务器刚刚完成Power On,顺序激活各个LPAR时,Hypervisor会自动保证CPU与内存之间最佳的Affinity状态。

服务器经过长期运行之后,内存的分配并不是一成不变的。如果发生了很多动态LPAR资源调整、修改LPAR的Profile配置、删除LPAR、创建新的LPAR、LPM分区迁移操作,或者分区由于Workload很大通过Micro Partitioning方式获得了大量额外CPU时间片,都会导致Affinity状态偏离初始最佳状态。

在Power7+产品平台(9117-MMD/9179-MHD),760微码版本引入了一项新功能Dynamic Platform Optimizer(DPO),该功能可以高效地、在线地改善内存Affinity状态。

使用HMC命令“lsmemopt –m <system_name> -o currscore”来查看当前的affinity分值。Affinity分值为从0~100,0代表最差的Affinity状态,100代表最佳的Affinity状态。

使用HMC命令“lsmemopt -m <system_name> -o calcscore”来预估经过DPO功能优化后能够达到的Affinity分值。

使用HMC命令“optmem -m <system_name> -o start –t affinity”来对整台服务器进行Affinity优化。

使用HMC命令“lsmemopt -m <system_name>”显示当前DPO优化操作的进度。

使用HMC命令“optmem -m <system_name> -o stop”可以提前中断正在进行中的DPO优化操作。这可能会导致某些分区处于非常糟糕 的Affinity状态。

同时optmem命令还有-xid参数指明某个LPAR不需要优化,-id参数指明首先优化某个LPAR。例如“optmem –m myserver –o start –t affinity –xid 4 –id 2”命令的含义是,对于服务器myserver开始DPO优化操作,对LPAR ID 4不优化,首先对LPAR ID 2开始优化,接下来安装重要程度依次优化其它没有明确说明的LPAR。

注:在进行DPO操作的时候,不允许同时执行DLPAR和LPM操作。

AIX 7.1 TL2 (or later),AIX 6.1 TL8 (or later),VIOS 2.2.2.0,IBM i 7.1 PTF MF56058操作系统可以正确地识别DPO完成报告,并动态地识别到物理资源的真实状态。

但是对于较低的操作系统版本,将无法识别DPO完成报告,也就无从得知底层物理资源的变化。所以,建议不要对运行低版本操作系统的分区执行在线DPO优化操作。

4. 重启物理机

在不支持DPO功能的情况下,提高内存Affinity的最有效方式为Power Off、Power On整台服务器,因为在服务器Power On之后,会按照实现最优Affinity为目标,为分区分配CPU和内存。
具体步骤如下

(1) 根据需要修改分区Profile配置文件
(2) 将Profile发生变化的分区Deactivate,然后以新的Profile Reactivate分区至SMS菜单
(3) 等待所有分区都获得了期望的硬件资源之后,将所有分区Deactivate
(4) Power Off服务器
(5) Power On服务器
(6) 然后Activate分区(无次序要求)

5. LPAR的优化

如果当前不支持DPO功能,只想重启一些LPAR,不愿意重启整台服务器,可以通过HMC命令chhwres来改善内存Affinity。

具体步骤如下:

  1. Deactivate所有分区
  2. 使用HMC命令chhwres释放所有已经分配给分区的CPU、内存资源
    1)chhwres –r mem –m <system name> -o r –q <number of Mbtyes> --id <lpar id> #从指定的LPAR移除内存资源
    2)chhwres –r proc –m <system name> -o r --procunits <number> --id <lpar id> # 从指定的LPAR移除CPU资源
    3)从HMC GUI查看所有分区所分配的CPU和内存数量都已经变为0
  3. 创建一个全分区并激活全分区至SMS菜单
  4. 关闭该全分区,然后删除该全分区
  5. 按照分区的重要程度,依次激活各个分区,首先激活CPU/内存资源最多、最重要的分区,再激活次重要的分区。

该方法也可以用于单个LPAR的亲和度调整,但改善程度有限,改善程度取决于很多因素:服务器上CPU的空闲情况、内存的空闲情况、其它LPAR的CPU、内存资源配置。

下节预告

计算交易系统每笔业务消耗的CPU在容量规划、测试环境计划和部署、测试结果分析过程中比较重要。下节介绍计算每笔业务消耗CPU的几种方法。

性能指标之资源指标 CPU配置参数对性能的影响
性能指标之资源指标 CPU利用率的性能分析
性能指标之资源指标 CPU亲和性原理介绍及如何量化读数
性能指标之资源指标 如何精确计算每笔交易消耗的CPU

微信公众号:性能测试与调优

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

5

添加新评论0 条评论

Ctrl+Enter 发表

本文隶属于专栏

作者其他文章

相关问题

X社区推广