1、虚拟机原理概述

虚拟化是创建基于软件的,或计算机的“虚拟”版本的过程,其中包含从物理主机计算机(如个人计算机)和/或远程服务器(如云提供商的数据中心的服务器)“借用”的专用 CPU、内存和存储量。虚拟机是指行为方式类似于实际计算机的计算机文件(通常称为映像)。它可以作为独立的计算环境在窗口中运行,通常用于运行不同的操作系统,甚至可作为用户的整个计算机体验,这在许多人的工作计算机上都很常见。虚拟机与系统的其余部分相互隔离,这意味着虚拟机中的软件不会干扰主机的主要操作系统。

下面从5个方面进一步阐述:

2、源文件

最初创建的Java源文件(.Java文件)中。Java文件首先通过前端编译器(javac或ECJ)编译为Java字节代码文件。

JRE接着加载Java字节代码文件,加载系统分配给JVM的内存区域,运行引擎解释或编译类文件,然后实时编译器将字节代码转换为机器代码。

虚拟机资源包括CPU、内存、网络和磁盘等多个方面。规划虚拟机时,应考虑这些资源之间的关系。否则,分配的资源可能不适当,这会降低虚拟机内应用程序的性能。

3、CPU分配

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

更复杂的因素之一是,在ESXi服务器中,所有虚拟机共享物理CPU。ESXi服务器中的内核数越多,每个vCPU的内核份额就越大,因此多核的性能比内核频率高,但数量比较少时更好。

如果虚拟机使用大量CPU时间,建议为虚拟机分配第二个vCPU,但由于只有多线程应用程序才能有效使用多个vCPU,因此为虚拟机分配多个vCPU并不意味着应用程序运行得更快。

4、RAM分配

在ESXi服务器中,RAM资源通常是有限的,在将RAM分配给虚拟机时需要特别小心。VMkernel在处理RAM时非常聪明。允许虚拟机使用ESXi服务器上的所有物理内存,并且不使用物理内存。

完全使用物理内存后,VMkernel必须确定哪些虚拟机可以保留物理内存,哪些虚拟机可以保留物理内存。这称为“内存回收”。回收虚拟机使用的物理内存存在影响虚拟机性能的风险。虚拟机回收的内存越多,产生的风险就越大。

最明智的做法是仅向虚拟机分配完成操作所需的内存。额外分配内存会增加回收风险。另一方面,在虚拟机操作系统中使用未使用的内存作为磁盘缓存时,这是一个折衷点,因为对磁盘系统的性能要求会大大降低。

5、网络带宽

网络带宽包括两个方面:一是虚拟机和虚拟交换机之间的带宽,二是虚拟交换机与外部网络之间的带宽。对于与外部物理网络的连接,一定要确保主机具备速度非常快的物理网卡。进行大量网络传输的虚拟机,虚拟机以及数据包的传输都会消耗CPU时间。因此,运行在CPU受限的服务器之上的虚拟机由于CPU无法快速响应请求可能会面临网络吞吐量不高的情况。

6、磁盘性能

磁盘性能往往是无声的性能杀手。虚拟机磁盘性能受阵列磁盘数量、类型以及运行在其上的虚拟机的数量的限制。因为集中地共享存储架构将导致通过同一位置访问所有的虚拟机磁盘,阵列的存储控制器以及磁盘过载情况很容易出现,只剩下虚拟机在 等待存储的响应。
虚拟机等待磁盘IO、虚拟机CPU空闲对性能的影响有很大不同。等待IO的虚拟机无法做其他工作,因此高I/O等待时间意味 着性能肯定会下降。进行周密的存储设计以避免上述情况的发生至关重要。