当前位置:首页 > 虚拟机 > 正文

虚拟机的原理和特点

一、虚拟机是怎样运行的,原理是什么?

虚拟机的运行:

是指通过软件模拟出一个具有完整硬件系统功能、在完全隔离的环境中运行的完整计算机系统。

原理:

原来写好的Java源文件(.java文件)是如何一步步执行的,如下图所示,先Java源文件通过前端编译器(javac或ECJ)将.java文件编译成Java字节码文件。

然后JRE将Java字节码文件加载到系统分配给JVM的内存区域中,然后执行引擎解释或编译该类文件,然后即时编译器将字节码转换转化为机器码。

扩展信息:

虚拟机资源涉及很多方面:CPU、内存、网络和磁盘。 规划虚拟机时应考虑这些资源之间的关系。 否则,资源分配不合理将导致虚拟机内应用程序性能不佳。

CPU:

虚拟机的每个vCPU仅运行在一个物理核心上。 因此,CPU频率越高,虚拟机运行的速度就越快。 更多的vCPU有助于提高应用程序性能。

一个更复杂的因素是,在ESXi服务器中,所有虚拟机共享物理CPU的使用。 ESXi服务器拥有的核心越多,每个vCPU获得的核心份额就越大。 因此,多核的性能优于核心频率高但数量少的情况。

如果虚拟机需要占用大量CPU时间,可以考虑为虚拟机分配第二个vCPU。 然而,为虚拟机分配两个以上的vCPU并不一定能让应用程序运行得更快,因为只有多线程应用程序才能有效地使用多个vCPU。

RAM:

ESXi服务器内的RAM资源通常是有限的,因此在为虚拟机分配RAM时需要格外小心。 VMkernel在处理RAM方面非常聪明;它允许虚拟机使用ESXi服务器的所有物理内存,并尽量避免占用物理内存而不实际使用它。

物理内存完全用完后,VMkernel必须确定哪些虚拟机可以保留物理内存,哪些虚拟机需要释放物理内存。 这称为“内存回收”。 当虚拟机占用的物理内存被回收时,存在影响虚拟机性能的风险。 虚拟机回收的内存越多,相应的风险就越大。

最明智的做法是仅分配虚拟机完成其工作所需的内存。 分配额外的内存会增加收集的风险。 另一方面,当虚拟机操作系统使用未使用的内存作为磁盘缓存时,会显着降低对磁盘系统的性能要求,因此这里存在一个权衡问题。

对于数据库服务器和VDI桌面,为虚拟机分配更多内存(在ESXi服务器上运行更少的虚拟机)通常比购买高性能磁盘阵列更具成本效益。 关键是为虚拟机的工作负载分配足够的内存而不浪费它。

参考资料:

百度百科-虚拟机