平台人生
作者平台人生2016-12-05 19:57
软件开发工程师, 平台人生

PowerAIXCPU折叠功能介绍

字数 2925阅读 7924评论 1赞 0

作者:王思文
文章来自微信公众号平台人生


1.CPU折叠功能介绍

虚拟处理器管理(VirtualProcessorManagement),也称之为处理器折叠技术(CPUFolding),是一项Power虚拟化特性,用于控制一个LPAR处理使用的VP(VirtualProcessor)数量。按目前AIX的设置,默认对微分区(即共享处理器分区)开启了处理器折叠功能;而专有处理器分区(dedicatedLPAR)则默认关闭此功能。
处理器折叠技术的作用主要体现在两个方面:
1)节能,如果一个物理核心对应的所有VP都处于被折叠状态,PowerVMhypervisor可以将这颗核心置于低能耗状态。
2)提高整体处理效率,特别是在EC:VP配比较低的环境,比如1:10或以上(在新一代power资源池中,EC:VP=1:2),如果直接将十多倍的VP调度到每个物理核心(PhysicalProcessor,PP)上,将造成一定的调度开销;因此通过折叠不必要的VP,可以有效降低hypervisor的无谓开销,提高整体效率。

这个特性在两种场景都有帮助: 1)LPARCPU使用率不高,多数VP空闲;通过减少VP数量,可以有效提高每个VP对应的物理核心份额(即physc,可以通过mpstat/sar–PALL等查看每个核心的pc/physc值);从而可以有效减少hypervisor以及操作系统的调度开销。比如如果分区只能实际消耗掉16颗物理核心(lparstat显示physc=16),但设置的VP数为64,如果系统能只使用16个VP来调度作业,则VP被调度到物理核心时是1:1的方式(接近Dedicated模式),hypervisor调度效率比较高,亲和度一般也更优;而与此相比,如果系统直接使用64个VP来调度作业,则VP被调度到物理核心时是4:1的方式,效率以及亲和度一般会略低。
2)处理器池(processorpool)中处理器资源紧张,LPAR开始争抢CPU资源;VP数量实际上定义了LPAR能争抢到的物理核心的上限;但并非每个分区都总是能抢到上限值,尤其是在EC:VP配比较低的环境下。在处理器资源竞争激烈时,分区能得到的总处理器资源可能会受到限制,此时减少分区的VP数量也有整体调度上的好处。比如一个8VP的分区,如果只能得到2.0颗物理核心(physc=2.0),那么如果激活的VP数减少到4的话(相当于每个VP平均能拿到0.5physicalcore),性能一般比VP为8时要更优(相当于每个VP平均能拿到0.25physicalcore)。

2.AIXCPU折叠算法以及实验

每一秒,AIX操作系统监控本分区的总体VP利用率,如果总体VP利用率低于vpm_fold_threshold(AIX6.1TL6以后默认为49%;可通过schedo命令确认),AIX将启用折叠功能,开始向下折叠VP,使负载运行在较少的VP上。注意被折叠的VP在系统中仍然存在,只是系统不再往这些被折叠的VP调度作业线程了。而如果总利用率超出vpm_fold_threshold, AIX将开始展开VP使用更多的VP来调度负载。用户可以通过控制参数来选择是否打开folding策略;还可以通过schedo的vpm_xvcpus选项来设置保底激活的VP数量。

2.1VPM控制参数说明
Folding策略开关由schedo的vpm_fold_policy选项控制。
1) vpm_fold_policy=0在静态节能模式以外的场景关闭folding功能;
2) vpm_fold_policy=1只在微分区环境打开folding功能(默认设置);
3) vpm_fold_policy=2只在专有处理器分区环境打开folding功能;
4) vpm_fold_policy=3在微分区、专有处理器分区环境均打开folding功能;
5) vpm_fold_policy=4彻底关闭folding功能;

还有一个影响Folding策略开关的参数vpm_xvcpus, 它的作用是控制当微分区CPU不足的时候,系统可以自动启动的微分区的数量。
1) 设置vpm_xvcpus = -1, vpm_fold_policy会自动被设置为0,这样会关闭folding功能。但如果此时分区开启了静态节能模式(StaticPowerSaving),则系统会自动设置vpm_fold_policy为3打开folding功能;
2) 设置vpm_xvcpus = 0,表示启用了CPU折叠功能(ProcessorFolding),虚拟处理器正接受管理;
3) 设置vpm_xvcpus大于1,CPU折叠功能打开,并且开启的虚拟CPU数目为物理CPU使用数与vpm_xvcpus参数之和。即:
number=ceiling(p_util+vpm_xvcpus);
其中number是所需的虚拟处理器数,p_util是物理处理器使用情况。如果number小于当前已启用的虚拟处理器数,那么将禁用某个虚拟处理器。如果number大于当前已启用的虚拟处理器数,将启用已禁用的虚拟处理器。在vpm_xvcpus大于1的情况下,也表示保底激活的CPU数。连接到已禁用的虚拟处理器的线程仍然可以在已禁用的虚拟处理器上运行
说明:
1) StaticPowerSaverMode:静态节能模式是当系统CPU工作负载低的时候,系统把物理CPU主频和电压降低到一个固定值,以达到节能目的。一般关注性能的系统不建议采用此设置。
2) DynamicPowerSaverMode:动态节能模式是系统根据CPU负载大小,实时调整物理CPU主频和电压(不是固定值),以达到节能目的。
3) 系统缺省设置以上两种节能模式都是关闭的,可以通过HMC/ASMI设置。

2.2AIXCPU折叠实验
开启一个ncpu任务给系统增加CPU负载,启动16个进程,每个50%时间繁忙,这样大约需要占用8颗物理core。

微分区环境下,关闭处理器折叠时的表现:


微分区环境下,打开处理器折叠时的表现:


通过kdb命令也可以查看到VP的折叠现象,下图中标识“DIS”的即为折叠状态的逻辑CPU.

可见:
1) 从lparstat可以看到,无论folding打开或者关闭,physc大约为8.00左右;
2) 从mpstat -s的输出可知,同样的场景下(8个任务50%繁忙),启动cpu folding时,只需要9颗VCPU;而关闭cpu folding时,所有16颗VCPU都被启动了;

3.CPU折叠功能对系统的影响

3.1 关闭CPUfolding的影响:
关闭了系统内核对微分区环境的自动调度优化;所有的VP都会被调度到hypervisor,不管这些VP上是否有实际负载;更高的hypervisor延时,物理资源亲和度也可能受到影响。
3.2 关闭CPU folding的好处:
对于分区sizing非常完美的情形下,比如EC:VP始终控制在不低于1:2,而且处理器池资源从未受限,这时关闭folding可能获得一定的性能收益(主要是通过减少VPM管理开销,以及避免unfold展开CPU延迟)

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

0

添加新评论1 条评论

gaoxiangkygaoxiangky系统工程师, CGB
2019-02-28 10:51
不错
Ctrl+Enter 发表

本文隶属于专栏

作者其他文章

X社区推广