隨著虛擬機(jī)數(shù)量的不斷增加,了解哪些資源會對虛擬機(jī)穩(wěn)定性產(chǎn)生影響是非常重要的,這些資源不僅指單個(gè)虛擬機(jī)資源,還包括虛擬機(jī)共享的資源。
應(yīng)用性能表現(xiàn)良好絕非偶然。需要對應(yīng)用以及交付給應(yīng)用的資源有所了解。虛擬機(jī)資源涉及多個(gè)方面:CPU、內(nèi)存、網(wǎng)絡(luò)以及磁盤。在規(guī)劃虛擬機(jī)時(shí)應(yīng)該考慮這些資源之間的關(guān)系,否則,分配的資源不合理將導(dǎo)致虛擬機(jī)內(nèi)的應(yīng)用程序性能表現(xiàn)不佳。
CPU
虛擬機(jī)每個(gè)vCPU只運(yùn)行在一個(gè)物理核心之上,因此CPU頻率越高虛擬機(jī)的運(yùn)行速度也就越高,vCPU數(shù)量越多有助于提升應(yīng)用的性能表現(xiàn)。一個(gè)比較復(fù)雜的因素就是在ESXi服務(wù)器內(nèi),所有的虛擬機(jī)共享使用物理CPU.ESXi服務(wù)器的核心數(shù)越多,每個(gè)vCPU獲得的核心份額也就越大,因此多核心的性能表現(xiàn)要強(qiáng)于核心頻率高但數(shù)量少的情況。
如果虛擬機(jī)需要占用大量的CPU時(shí)間,那么可以考慮為虛擬機(jī)分配第二個(gè)vCPU,但是請記住,為虛擬機(jī)分配兩個(gè)以上vCPU并不一定讓應(yīng)用運(yùn)行的更快,因?yàn)橹挥卸嗑€程應(yīng)用才能有效地使用多個(gè)vCPU.
更糟糕的是,VMkernel為多vCPU虛擬機(jī)調(diào)度計(jì)算資源的難度也更大,這意味著增加vCPU后應(yīng)用可能會運(yùn)行的更慢。目前ESXi服務(wù)器通常有很多核心,因此如果虛擬機(jī)規(guī)模合理,那么通常能夠?yàn)檫\(yùn)行在該服務(wù)器上的所有虛擬機(jī)提供充足的CPU時(shí)間。
RAM
ESXi服務(wù)器內(nèi)RAM資源通常有限,因此在給虛擬機(jī)分配RAM時(shí)需要格外小心。VMkernel在處理RAM時(shí)非常巧妙;允許虛擬機(jī)使用ESXi服務(wù)器所有的物理內(nèi)存而且會盡量避免占用物理內(nèi)存卻沒有真正使用的情況。
物理內(nèi)存被完全用完后,VMkernel必須確定哪些虛擬機(jī)能夠保留物理內(nèi)存,哪些虛擬機(jī)要釋放物理內(nèi)存。這稱之為“內(nèi)存回收”。當(dāng)虛擬機(jī)占用的物理內(nèi)存被回收后,存在的一個(gè)風(fēng)險(xiǎn)就是會對虛擬機(jī)的性能造成影響。虛擬機(jī)被回收的內(nèi)存越多,相應(yīng)的風(fēng)險(xiǎn)也就越大。
最明智的是只為虛擬機(jī)分配完成工作所需要的內(nèi)存。分配額外的內(nèi)存將會增加回收風(fēng)險(xiǎn)。另一方面,當(dāng)虛擬機(jī)操作系統(tǒng)將未被使用的內(nèi)存用作磁盤緩存時(shí),將會顯著降低對磁盤系統(tǒng)的性能要求,所以這里有一個(gè)折衷問題。
對于數(shù)據(jù)庫服務(wù)器以及VDI桌面來說,為虛擬機(jī)分配更多的內(nèi)存往往更劃算—在一臺ESXi服務(wù)器上運(yùn)行更少的虛擬機(jī)—而不是購買高性能的磁盤陣列。關(guān)鍵在于針對虛擬機(jī)的負(fù)載分配足夠多內(nèi)存而且沒有浪費(fèi)。
網(wǎng)絡(luò)帶寬
談到網(wǎng)絡(luò)帶寬,往往包括兩個(gè)方面:一是虛擬機(jī)和虛擬交換機(jī)之間的帶寬,二是虛擬交換機(jī)與外部網(wǎng)絡(luò)之間的帶寬。如果希望虛擬機(jī)獲得最大帶寬那么應(yīng)該使用VMXNET3網(wǎng)絡(luò)適配器,VMXNET3在最小的CPU開銷下提供了最好的吞吐量。如果情況允許,所有的虛擬機(jī)都應(yīng)該使用VMXNET3網(wǎng)絡(luò)適配器。
對于與外部物理網(wǎng)絡(luò)的連接,一定要確保ESXi主機(jī)具備速度最快的物理網(wǎng)卡;10Gb是一個(gè)不錯(cuò)的選擇,即使物理網(wǎng)卡的數(shù)量很少,但10Gb能夠允許虛擬機(jī)承受突發(fā)的網(wǎng)絡(luò)流量。
請記住,進(jìn)行大量網(wǎng)絡(luò)傳輸?shù)奶摂M機(jī),虛擬機(jī)以及數(shù)據(jù)包的傳輸都會消耗CPU時(shí)間。因此,運(yùn)行在CPU受限的ESXi服務(wù)器之上的虛擬機(jī)由于CPU無法快速響應(yīng)請求可能會面臨網(wǎng)絡(luò)吞吐量不高的情況。
磁盤性能
磁盤性能往往是無聲的性能殺手。虛擬機(jī)磁盤性能受陣列磁盤數(shù)量、類型以及運(yùn)行在其上的虛擬機(jī)的數(shù)量的限制。因?yàn)榧械毓蚕泶鎯軜?gòu)將導(dǎo)致通過同一位置訪問所有的虛擬機(jī)磁盤,陣列的存儲控制器以及磁盤過載情況很容易出現(xiàn),只剩下虛擬機(jī)在等待存儲的響應(yīng)。
虛擬機(jī)等待磁盤IO、虛擬機(jī)CPU空閑對性能的影響有很大不同。等待IO的虛擬機(jī)無法做其他工作,因此高I/O等待時(shí)間意味著性能肯定會下降。進(jìn)行周密的存儲設(shè)計(jì)以避免上述情況的發(fā)生至關(guān)重要。