虛擬機(jī)資源涉及多個(gè)方面:CPU、內(nèi)存、網(wǎng)絡(luò)以及磁盤(pán)。在規(guī)劃虛擬機(jī)時(shí)應(yīng)該考慮這些資源之間的關(guān)系,否則,分配的資源 不合理將導(dǎo)致虛擬機(jī)內(nèi)的應(yīng)用程序性能表現(xiàn)不佳。
虛擬機(jī)每個(gè)vCPU只運(yùn)行在一個(gè)物理核心之上,因此CPU頻率越高虛擬機(jī)的運(yùn)行速度也就越高,vCPU數(shù)量越多有助于提升應(yīng)用的性能表現(xiàn)。如果虛擬機(jī)需要占用大量的CPU時(shí)間,那么可以考慮為虛擬機(jī)分配第二個(gè)vCPU,但是,為虛擬機(jī)分配兩個(gè)以上vCPU并不一定讓?xiě)?yīng)用運(yùn)行的更快,因?yàn)橹挥卸嗑€(xiàn)程應(yīng)用才能有效地使用多個(gè)vCPU。
RAM資源通常有限,因此在給虛擬機(jī)分配RAM時(shí)需要格外小心。物理內(nèi)存被完全用完后,必須確定哪些虛擬機(jī)能夠保留物理內(nèi)存,哪些虛擬機(jī)要釋放物理內(nèi)存。這稱(chēng)之為“內(nèi)存回收”。當(dāng)虛擬機(jī)占用的物理內(nèi)存被回收后,存在的一個(gè)風(fēng)險(xiǎn)就是會(huì)對(duì)虛擬 機(jī)的性能造成影響。虛擬機(jī)被回收的內(nèi)存越多,相應(yīng)的風(fēng)險(xiǎn)也就越大。 [10] 最明智的是只為虛擬機(jī)分配完成工作所需要的內(nèi)存。分配額外的內(nèi)存將會(huì)增加回收風(fēng)險(xiǎn)。另一方面,當(dāng)虛擬機(jī)操作系統(tǒng)將未被使用的內(nèi)存用作磁盤(pán)緩存時(shí),將會(huì)顯著降低對(duì)磁盤(pán)系統(tǒng)的性能要求,所以這里有一個(gè)折衷問(wèn)題。
網(wǎng)絡(luò)帶寬包括兩個(gè)方面:一是虛擬機(jī)和虛擬交換機(jī)之間的帶寬,二是虛擬交換機(jī)與外部網(wǎng)絡(luò)之間的帶寬。對(duì)于與外部物理網(wǎng)絡(luò)的連接,一定要確保主機(jī)具備速度最快的物理網(wǎng)卡。進(jìn)行大量網(wǎng)絡(luò)傳輸?shù)奶摂M機(jī),虛擬機(jī)以及數(shù)據(jù)包的傳輸都會(huì)消耗CPU時(shí)間。因此,運(yùn)行在CPU受限的服務(wù)器之上的虛擬機(jī)由于CPU無(wú)法快速響應(yīng)請(qǐng)求可能會(huì)面臨網(wǎng)絡(luò)吞吐量不高的情況。
磁盤(pán)性能往往是無(wú)聲的性能殺手。虛擬機(jī)磁盤(pán)性能受陣列磁盤(pán)數(shù)量、類(lèi)型以及運(yùn)行在其上的虛擬機(jī)的數(shù)量的限制。因?yàn)榧械毓蚕泶鎯?chǔ)架構(gòu)將導(dǎo)致通過(guò)同一位置訪(fǎng)問(wèn)所有的虛擬機(jī)磁盤(pán),陣列的存儲(chǔ)控制器以及磁盤(pán)過(guò)載情況很容易出現(xiàn),只剩下虛擬機(jī)在 等待存儲(chǔ)的響應(yīng)。 [10] 虛擬機(jī)等待磁盤(pán)IO、虛擬機(jī)CPU空閑對(duì)性能的影響有很大不同。等待IO的虛擬機(jī)無(wú)法做其他工作,因此高I/O等待時(shí)間意味 著性能肯定會(huì)下降。進(jìn)行周密的存儲(chǔ)設(shè)計(jì)以避免上述情況的發(fā)生至關(guān)重要。 [10] 合理選擇磁盤(pán) 提升虛擬機(jī)性能。在虛擬化中,hypervisor將工作負(fù)載從運(yùn)行在底層的物理硬件中抽象出來(lái),允許快速分配并共享計(jì)算資源,遷移工作負(fù)載。盡管hypervisor以及與虛擬化兼容的處理器性能開(kāi)銷(xiāo)很小,但是虛擬化層的存在卻對(duì)性能有影響。 [10] 當(dāng)磁盤(pán)性能對(duì)工作負(fù)載至關(guān)重要時(shí),某些管理員可能會(huì)選擇以直通模式配置LUN,允許虛擬機(jī)的操作系統(tǒng)繞過(guò)hypervisor與直接LUN進(jìn)行通信。例如,Windows服務(wù)器虛擬機(jī)可能使用直通模式繞過(guò)Hyper-V直接訪(fǎng)問(wèn)磁盤(pán),這對(duì)SQL Server數(shù)據(jù)庫(kù)的性能有些許提升。然而,由于客戶(hù)操作系統(tǒng)(采用直通模式)以及hypervisor試圖同時(shí)訪(fǎng)問(wèn)磁盤(pán),那么hypervisor必須被配置為忽略直通LUN。 [10] 直通模式存在的問(wèn)題是其不被某些重要的虛擬化功能比如虛擬機(jī)快照或者集群所支持。因此,虛擬機(jī)在實(shí)際上可能會(huì)受益于虛擬化提供的各種功能特性而非采用直通模式所帶來(lái)的處于邊緣地位的性能提升。管理員需要評(píng)估虛擬機(jī)的需求并確定直通模式的適宜性。 [10] 除直通模式外,Hyper-V以及其他hypervisor還提供了其他磁盤(pán)存儲(chǔ)選項(xiàng)。例如,當(dāng).VHD文件被創(chuàng)建時(shí),大小固定的磁盤(pán)將分配所有的數(shù)據(jù)塊。一旦被創(chuàng)建,大小固定的磁盤(pán)就不能夠進(jìn)行調(diào)整了。然而,動(dòng)態(tài)擴(kuò)展磁盤(pán)從一開(kāi)始創(chuàng)建的就是沒(méi)有數(shù)據(jù)塊的.VHD文件,當(dāng)數(shù)據(jù)寫(xiě)入到.VHD文件中后磁盤(pán)空間才會(huì)被分配出去。這和精簡(jiǎn)配置類(lèi)似,盡管在邏輯上創(chuàng)建了一塊磁盤(pán),但實(shí)際的磁盤(pán)空間只有數(shù)據(jù)寫(xiě)入時(shí)才會(huì)被用到。 [10] 差分磁盤(pán)是一種特殊的動(dòng)態(tài)擴(kuò)展磁盤(pán)類(lèi)型。其設(shè)計(jì)思路是父磁盤(pán)擁有固定的鏡像而且差分磁盤(pán)與父磁盤(pán)相關(guān)聯(lián),因此寫(xiě)入到磁盤(pán)的數(shù)據(jù)被存放在差分磁盤(pán)而非.VHD文件中。讀請(qǐng)求首先檢查差分磁盤(pán)的.VHD文件,如果沒(méi)有更改,就會(huì)讀父.VHD文件。當(dāng)需要標(biāo)準(zhǔn)化的磁盤(pán)鏡像而且回滾功能很重要時(shí),差分是一個(gè)不錯(cuò)的主意,但是管理員在維護(hù)父子磁盤(pán)配置時(shí)可能會(huì)面臨挑戰(zhàn)。