内核调度程序已得到增强,可结合分区的即时装入动态增加和减少虚拟处理器的使用(这可以通过分区的物理利用率来评估)。
内核调度程序每秒都评估应该激活的虚拟处理器的数目以满足分区的物理利用率。如果该数目导致虚拟处理器的使用数很高,那么增加所需的虚拟处理器的基本数目以使工作负载能够扩展。可以使用 schedo 命令来请求更多的虚拟处理器。该值用来确定是否需要启用或禁用虚拟处理器,因为调度程序每秒只调整正在使用的虚拟处理器的数目一次。因此,如果计算出的数字大于当前激活的虚拟处理器的数目,那么激活虚拟处理器。 如果该数字小于当前激活的虚拟处理器的数目,那么停用虚拟处理器。
当虚拟处理器停用时,它们不会像 DLPAR 那样从分区中动态除去。虚拟处理器不再等候着运行或接收未绑定的工作,但它仍然可以运行绑定作业。对用户和应用程序可见的联机逻辑处理器和联机虚拟处理器的数目不会更改。对系统上运行的中间件或应用程序也没有影响,因为活动和不活动的虚拟处理器是系统内部提供的。
可以使用 vpm_xvcpus 可调参数启用和禁用折叠虚拟处理器的虚拟处理器管理功能。 vpm_xvcpus 可调参数的缺省值是 0,表示启用了折叠功能。这意味着虚拟处理器正接受管理。可使用 schedo 命令来修改 vpm_xvcpus 可调参数。有关更多信息,请参阅 《AIX® V6.1 命令参考大全》,第 5 卷中的 schedo 命令。
# schedo -o vpm_xvcpus=-1要确定是否启用了虚拟处理器管理功能,您可以使用以下命令:
# schedo -o vpm_xvcpus要将正在使用的虚拟处理器的数目增加一个,可以使用以下命令:
# schedo -o vpm_xvcpus=1
所需的虚拟处理器的数目 = 物理 CPU 使用数 + 要启用的更多虚拟处理器的数目
如果所需的虚拟处理器的数目小于当前已启用的虚拟处理器的数目,那么停用虚拟处理器。如果所需的虚拟处理器的数目大于当前已启用的虚拟处理器的数目,那么启用已禁用的虚拟处理器。连接到已禁用的虚拟处理器的线程仍然能够在该处理器上运行。
以下示例描述了如何计算要使用的虚拟处理器的数目:
物理 CPU 使用数 = 2.5 要启用的更多虚拟处理器的数目(vpm_xvcpus) = 1 所需的虚拟处理器的数目 = 2.5 + 1 = 3.5将计算出的值向上取整为下一个整数等于 4。因此,系统上需要的虚拟处理器的数目是 4。所以,如果分区 A 运行时有 8 个虚拟处理器,那么禁用其中 4 个虚拟处理器,另外四个仍然启用。如果启用 SMT,那么每个虚拟处理器将生成 2 个逻辑处理器。因此,禁用 8 个逻辑处理器,并启用 8 个逻辑处理器。
Proc0 Proc2 Proc4 Proc6 19.15% 18.94% 18.87% 19.09% cpu0 cpu1 cpu2 cpu3 cpu4 cpu5 cpu6 cpu7 11.09% 8.07% 10.97% 7.98% 10.93% 7.93% 11.08% 8.00%
Proc0 Proc2 Proc4 Proc6 54.63% 0.01% 0.00% 0.08% cpu0 cpu1 cpu2 cpu3 cpu4 cpu5 cpu6 cpu7 38.89% 15.75% 0.00% 0.00% 0.00% 0.00% 0.03% 0.05%正如您从以上的数据所看到的,利用率的减少和维护辅助处理器对工作负载有益,并且当工作集中在一个虚拟处理器上时会增加相似性。但是,当工作负载很重时,折叠功能不会影响使用所有的虚拟 CPU(如果需要)的能力。