服务器虚拟化通过运用虚拟化的技术充分发挥服务器的硬件性能,能够在确保企业投入成本的同时,提高运行效率,节约能源降低经济成本和空间浪费。但随着虚拟化平台基数的高速增长,服务器资源、机房空间/电力资源、系统资源在统筹使用上矛盾日益突现,也发现在虚拟化资源的管理水平仍有待提升,主要体现在整体资源使用率较低,局部又存在资源紧张的现象。本文从四个方面介绍虚拟化、倍率、超线程和超分的基本原理及实现,以提升虚拟化资源的使用效率。
1.何为PC虚拟化?
所谓PC服务器虚拟化,就是在硬件和操作系统之间引入了虚拟化层(又称虚拟机监视器)。虚拟化层允许多个操作系统实例同时运行在一台物理服务器上,动态分区和共享所有可用的物理资源(CPU、内存、存储和网络设备)。通过引入虚拟化层,使得操作系统和应用可以从硬件上分离出来,打包成独立的、可移动的虚拟机,从而为IT架构带来极大的灵活性。
VMware的虚拟化方案称为VMwareInfrastructure、vSphere,目前最高版本为vSphere6.7。
备注:下面介绍的概念及技术针对vmware环境。IAAS云KVM虚拟化环境情况类似。
2.虚拟化倍率是什么?
虚拟化倍率是指单个物理服务器上可以同时运行的虚拟机的数量。倍率通常是用一个虚拟化环境中所有正在运行的虚拟机的总数除以宿主物理服务器的总数得来,结果一般表示成 n:1。单台服务器上部署“虚拟机和模板”的个数为13,那服务器的倍率就是13:1。
倍率一般与主机配置、虚机规格、安全策略、网络存储资源等因素相关联,下图为统计的亚太各主要国家虚拟化倍率数据,平均倍率为20:1:
倍率越低,意味着服务器的利用率越低。为了充分利用资源,提升服务器的资源利用率,凸显虚拟化的优势,可考虑超线程、超分等技术手段。
3.超线程技术管理及如何开启
超线程是intel研发的技术,利用特殊的硬件指令,把一个物理CPU核模拟成两个逻辑内核,使单个处理器能够使用线程级并行计算,减少CPU的闲置时间。
这项技术可以从线程级并行机制中获取更高的性能,一般而言,开启超线程后物理核总计算能力平均提升约20%-30%左右。但需注意,虽然采用超线程技术能同时执行两个线程,但它并不像两个真正的CPU那样具有独立的资源,总计算资源仍然受到单个物理CPU的限制。当两个线程都同时需要某一个资源时,其中一个要暂时停止并让出资源,直到这些资源闲置后才能继续,出现这种资源竞争的情况下,超线程的计算能力相比不开超线程时的物理核下降30%左右。是否需开启超线程以及开启超线程后的提升幅度取决于工作负载,如果CPU整理使用率高且部署的业务容易争抢资源,则不建议开启超线程。
开启超线程需进入BIOS中修改,设置Hyper Threading Technology为Enabled。下图为开启了超线程的服务器,它的逻辑处理器=2*CPU核=2*(4*14)=112。
4.超分技术及其应用
超分是指将同一种资源在同一时间段,以超过标准物理资源分配的方式,分配给不同的应用负载(虚机),以达到共享使用的目的。CPU的超分可以用单台物理服务器上所有正在运行的虚拟机的全部虚拟CPU总数,除以该物理服务器上全部物理CPU核的总数得来,结果一般表示成n:1。
在计算超分的时候,不建议将超线程按多个物理CPU来计算,因为超线程技术不是为了提供多个CPU核,而是为了提高单个CPU核的时钟利用率。只有当按上述方式计算的超分比率超过1:1的时候,才会被认为是发生了CPU超分,否则不能称之为超分。
如上面的13台虚拟机均是4C的配置,超分比率为 13*4核:56核=0.93:1,CPU未超分;若虚拟机配置均为8C,超分比率为 13*8核:56核=1.86:1,此时CPU超分。
根据vKernel实验室实测数据,CPU超分比率及相应的性能如下:
vCPU:pCPU 比率 | 性能 |
1:1 到 3:1 | 没有问题 |
3:1 到 5 : 1 | 可能触发性能降级问题 |
6:1 或更高 | 经常性发生问题 |
可以看出:当CPU超分比率小于3:1时,对整体性能是没有影响的,当超过3:1时就会出现稳定性问题。所以,为了最大限度地提升服务器的利用率,可以使用超分并控制超分比在合理范围内。因此生产环境通过开启超线程、使用超分等措施虚拟化倍率提升1.5-2倍左右。
另外,CPU超分是虚拟化技术的一大优势,他极大的提升了主机资源的利用率。但在实际使用中,也要合理评估超分的风险因素。如当虚机CPU超分时候,应同步考虑内存使用情况。内存超分将较大可能影响虚机性能,建议在内存不超分的前提下可适当采用CPU超分技术。
总之,如果服务器CPU使用率和整体工作负载不高的话,为了充分利用资源,提升主机的资源使用率,凸显虚拟化的优势,可以通过开启服务器的超线程、使用超分等技术手段充分利用资源,提升虚拟化的倍率。