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