虛擬機主要是什么原理?
要了解虛擬機的原理,要從多個角度去思考。
虛擬機運行:
是指在完全隔離的環(huán)境中運行、具有完整硬件系統(tǒng)功能的軟件模擬的完整計算機系統(tǒng)。
原理:
最初創(chuàng)建的Java源文件(.Java文件)中。Java文件首先通過前端編譯器(javac或ECJ)編譯為Java字節(jié)代碼文件。
JRE接著加載Java字節(jié)代碼文件,加載系統(tǒng)分配給JVM的內(nèi)存區(qū)域,運行引擎解釋或編譯類文件,然后實時編譯器將字節(jié)代碼轉(zhuǎn)換為機器代碼。
虛擬機資源包括CPU、內(nèi)存、網(wǎng)絡和磁盤等多個方面。規(guī)劃虛擬機時,應考慮這些資源之間的關(guān)系。否則,分配的資源可能不適當,這會降低虛擬機內(nèi)應用程序的性能。
CPU:
虛擬機只在一個物理核心上運行每個vCPU,因此CPU頻率越高,虛擬機運行速度越快,vCPU數(shù)量越多,有助于提高應用程序的性能。
更復雜的因素之一是,在ESXi服務器中,所有虛擬機共享物理CPU。ESXi服務器中的內(nèi)核數(shù)越多,每個vCPU的內(nèi)核份額就越大,因此多核的性能比內(nèi)核頻率高,但數(shù)量比較少時更好。
如果虛擬機使用大量CPU時間,建議為虛擬機分配第二個vCPU,但由于只有多線程應用程序才能有效使用多個vCPU,因此為虛擬機分配多個vCPU并不意味著應用程序運行得更快。
RAM:
在ESXi服務器中,RAM資源通常是有限的,在將RAM分配給虛擬機時需要特別小心。VMkernel在處理RAM時非常聰明。允許虛擬機使用ESXi服務器上的所有物理內(nèi)存,并且不使用物理內(nèi)存。
完全使用物理內(nèi)存后,VMkernel必須確定哪些虛擬機可以保留物理內(nèi)存,哪些虛擬機可以保留物理內(nèi)存。這稱為“內(nèi)存回收”。回收虛擬機使用的物理內(nèi)存存在影響虛擬機性能的風險。虛擬機回收的內(nèi)存越多,產(chǎn)生的風險就越大。
最明智的做法是僅向虛擬機分配完成操作所需的內(nèi)存。額外分配內(nèi)存會增加回收風險。另一方面,在虛擬機操作系統(tǒng)中使用未使用的內(nèi)存作為磁盤緩存時,這是一個折衷點,因為對磁盤系統(tǒng)的性能要求會大大降低。
對于數(shù)據(jù)庫服務器和VDI臺式機,向虛擬機分配更多內(nèi)存通常比不購買高性能磁盤陣列而在一臺ESXi服務器上運行更少的虛擬機更經(jīng)濟高效。關(guān)鍵是在虛擬機的負載中分配足夠的內(nèi)存,沒有浪費。