概要
服务器的虚拟化技术已经非常成熟了,在虚拟化环境中,多个vm运行在一台服务器上,因此可以更加有效地共享资源,有利于消减成本。但是如果资源被共享过度则会发生竞争,可能导致性能下降。所以,平衡资源效率和性能就很重要了。
什么是服务器虚拟化
服务器虚拟化是指一台物理服务器上运行多台虚拟服务器,也就是我们常说的虚机vm。通过在各个vm中分别运行os,即可在一台物理服务器上运行多个应用。
在虚拟化环境中,物理服务器上的cpu与内存等资源都将由多个vm共享。各个os都会以为自己是一个独立的物理服务器上运行,所以vm是完全独立运行的,不会影响其他vm。
虚拟化技术中的过载使用
虚拟化环境最大的优势就是可以有效使用资源。在物理机可以承受的范围内给vm分配cpu和内存。如果在物理服务器上创建多个vm,使得分配的cpu和内存的总量超过物理服务器本身的搭载量,就可以实现更高的资源使用率。这就叫做过载使用。
虚拟化环境下性能测试的相关知识
性能分析工具
和正常的性能测试中使用方法、注意事项并无差异,不在多说
CPU的性能管理
从物理服务器角度来看
首先,需要确认物理服务器的cpu使用率到底高不高。如果不搞,就需要确认个别vm的情况。
在cpu的性能问题中,针对物理服务器需要确认的就是cpu的竞争,换句话说就是逻辑cpu是否被争抢。常见的两种状态为等待被分配的cpu(指vm的虚拟cpu向逻辑cpu提出分配要求,但实际上由于其他vm正在使用当中,因此无法被分配,处于等待状态)和等待多个cpu同步处理(指被分配了多个虚拟cpu的vm为了进行同步处理而请求了逻辑cpu的分配,但由于一部分逻辑cpu正在被其他vm使用,因此无法被分配而进入等待状态)
如果存在等待时间较长的趋势,就有可能是vm发生了性能问题。在对象物理服务器上,如果单位时间的等待时间占10%~20%左右,就可能是vm发生了问题。注意这个比例只是参考,因为不同应用程序的特性不同也会产生差异。
从vm的角度来看
在物理服务器的cpu使用率不高的情况下,可以认为性能问题在于vm本身。vm本身有问题的情况可以考虑到2个原因:虚拟化的开销和vm内部的问题。一般通过使用硬件辅助虚拟化功能可以减少开销。
vm内部的问题是指由于cpu的资源不足,应用的设计问题或设置不完善导致无法充分发挥性能状态。在这种情况下,和在物理环境中一样,需要考虑增加资源或者对应用进行调优等。而如果只有特定的vm出现了问题,可能是因为vm的设置中对cpu进行了限制。解除限制即可。
内存的性能管理
和cpu的情况一样,影响内存性能的因素可以说是虚拟化带来的额外开销与过载使用引起的资源竞争
从物理服务器角度来看
一样,也是先确认物理服务器的内存使用率是否过高。如果不高的话就对个别的vm内存使用率进行确认。如果物理服务器的内存使用率过高,则接着确认内存的过载使用情况,有可能就是它导致性能下降的。
从vm的角度来看
如果物理服务器的内存使用率比较低,也没出现过载使用的话,可以初步判定性能问题是vm自身导致的。同样,如果是需要考虑2种原因:虚拟化的开销(通过硬件辅助虚拟化功能可以额外减少这个开销)和vm内部的问题(同cpu的,所以不在重复解释)。
参考资料:《图解性能优化》
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/192240.html