LinuxONE的计算能力毋庸置疑,但是当部署虚机数量大规模增加时,每颗IFL划分的粒度就越来越小,从而用于VCPU之间调度的资源消耗相应也会增加。有什么办法能较好的解决吗?比如部署100个4VCPU虚机是400VCPU,如果部署1000个那就是4000VCPU了,用于VCPU之间的资源调度将会消耗大量资源。
这是个很好的问题,其实本质来说是关于虚拟化软件,即Hypervisor的调度效率的问题。回答这个问题之前,先要回答为什么要用虚拟化的问题,因为虚拟化不能凭空增加资源,虚拟化的终极目的是为了提高资源整体的使用效率,降低运维成本和软件成本;因此即使是在LinuxONE这样的性能怪兽上面,也不可能无限部署虚拟机;大规模整合应用的前提是各类应用错峰运行且利用率偏低,如果每一类应用或每一个虚拟机都是在同样的时间片满负荷运行,那虚拟化整合并不能提升平台的效率。
因此回答楼主的问题,vCPU的数量和物理CPU数量的比值,也就是overcommit比例,这个数值在生产系统上一般不建议超过2,推荐的比值在1-1.5之间;在最新的z13上面,系统可用的物理CPU数量为282(SMT2),也就是理论上说,整机的vcpu不建议配置超过600;不过要注意的是,这里的600vcpu是指同时真正在线的虚拟机,也就是说系统可以定义任意多的虚拟机和资源,但系统管理员需要根据系统的实际情况调整在线服务的数量以保证overcommit的比例不会太高。因此建议在设计整合方案的时候,虚拟机的资源只要够用即可,不要配置不必要的资源;如果真实场景真如楼主设想的那样,需要1000vCPU才能承载的负载,建议仔细的做好容量规划,切分到不同的集群上运行。
从另外一个角度,即Hypervisor本身的调度效率做对比,LinuxONE上的z/VM系统产生的总体overcommit比值很低,满负荷运行的情况下一般是小于6%;针对Linux虚拟机来说,overcommit可以达到小于1%,这个数值也要远远好于其他的虚拟化平台。
一句话总结,就是在大规模整合的场景下,系统调度的消耗并不是瓶颈,核心问题在于如何设计应用的整合方案,从而充分利用整机的性能,降低资源消耗并提高运维效率。
收起是什么样的情况需要这么多的虚拟机呢?最好是遵从IBM提供的最佳实践来分配CPU,如果是没有特别的高性能需求的虚拟机,还是建议部署到x86平台上去,把Power系统的CPU处理能力留给需要虚拟机。