针对KVM虚拟机和Docker容器的性能测试,首先对二者的CPU计算能力进行了测试,通过SysBench测试工具分别测试宿主机、Docker容器和KVM虚拟机,测试三者生成素数所需要的时间,生成素数的个数从5000依次递增到25000,其测试结果如图7-4示。
图7-4 CPU性能对比
可以看到,未安装Docker容器和KVM虚拟机的纯主机与仅运行Docker容器或KVM虚拟机的主机,在各自的计算环境下其CPU计算能力相差无几。Docker容器相当于一个进程,直接运行在宿主机上,所以其运行计算性能测试时,只是测试线程在物理主机的CPU上执行,并不存在性能的损耗。
而运行KVM虚拟机的宿主机尽管多运行着一层Hypervisor,但其计算能力相比于纯主机而言,所产生的性能损耗并不大,究其原因是因为当虚拟机进行计算运算时,Hypervisor只是一个VirtualMachineMonitor,其并不参与运行指令的转换。由于当前的通用服务器的CPU都支持虚拟化,KVM虚拟机中的GuestOS在进行运算时只需要从宿主机的VMXNon-root模式自动切换到VMXroot模式,其运行的计算代码仍然是直接运行在底层的物理CPU上的,即CPU并未被KVM内核虚拟化为虚拟CPU,这使得KVM虚拟机只是在客户机到宿主机的指令转换时有一定时延,而当虚拟机开始计算时,其CPU计算能力并未受到损失。(www.xing528.com)
(2)多用户虚拟机环境下的CPU性能分析
为测试多用户环境下KVM虚拟机与Docker容器计算性能的对比,我们在实验环境中的物理宿主机分别部署了五个KVM虚拟机和五个Docker容器,每个虚拟机内存为1G,硬盘为10GB,运行64位Ubuntu 16.04.4操作系统。五台KVM虚拟机和五个Docker容器同时进行生成素数测试,从而测试其计算能力,测试结果如图7-5所示。
图7-5 多个客户机时CPU性能对比
可以看到当部署多个Docker容器或多个KVM虚拟机时,KVM虚拟机生成同样个数的素数需要更多的时间,其计算能力相比Docker出现了大幅下滑。这是因为多个KVM在Hypervisor之间进行切换时,需要占用一定的宿主机CPU资源,从而导致了其计算能力的下降。而Docker容器只需要直接竞争CPU资源,完成计算即可。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。