118 期 - VMware vSphere 6.0 效能調校最佳實務


網管人雜誌

本文刊載於 網管人雜誌第 118 期 - 2015 年 11 月 1 日出刊,NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。





文章目錄

1、前言
2、實體伺服器(Hardware Server)
          CPU - 硬體輔助虛擬化(VT-x / AMD-V)
          Memory - 硬體輔助虛擬化(EPT / NPT)
          IO - 硬體輔助虛擬化(VT-d / AMD-Vi)
          實體記憶體(Memory)
          儲存設備(Storage)
          網路卡(Network Adapter)
          BIOS 設定
3、ESXi / VM 基礎效能調校
          ESXi – 電力配置優化
          ESXi – 啟用 CBRC 讀取快取機制
          VM – 啟用硬體輔助虛擬化技術
          VM – 啟用 vNUMA
          VM – 安裝 VMware Tools
4、結語





1、前言

VMware 官方在 2001 年 3 月時,發佈 VMware ESX Server 1.0 企業級虛擬化平台。經過 14 年的演變時至今日,VMware 於 2015 年 3 月正式推出最新版本 VMware vSphere ESXi 6.0

在 2004 年所發表,最知名的 VMotion 即時遷移技術(在 vSphere 4.1 版本後改稱為 vMotion),演化至今除了能夠跨越不同的 vCenter Server 伺服器之外,更可以跨越地域的限制,只要執行遷移的網路環境,能支援封包延遲時間在 100ms 之內,那麼就能達成跨越地域限制的 vMotion 即時遷移。

圖 1、VMware vSphere 跨越 Cluster 遷移運作示意圖

雖然,VMware vSphere ESXi 虛擬化平台不斷改善,可支援非常大的硬體資源。但是,當採用了硬體架構規劃不當的實體伺服器,除了耗損不必要的功率之外也將造成效能不佳的結果。

因此,本文將以最新版本的 VMware vSphere 6.0 為運作架構進行探討,從底層實體伺服器的規劃開始,該如何選擇 CPU、Memory、Storage、Network 等虛擬化資源四大元件,接著逐步深入到 ESXi 虛擬化平台及 VM 虛擬主機...等,以期達到建構硬體效能最佳實務。





2、實體伺服器(Hardware Server)

在企業或組織要採購擔任虛擬化平台的實體伺服器之前,應該先參考 VMware HCL 硬體相容性指南網站,以便了解所採購的實體伺服器是否正確支援 ESXi 虛擬化平台,確保後續實作進階功能,例如,VMware vMotion、DRS、DPM、Fault Tolerance...等能順利運作,不會因為原生硬體功能不支援而無法實作的困境。

首先,請選擇具備更多定址空間的 64 位元 CPU 及更高容量的 L2/L3/L4 快取。同時,若運作在 ESXi 虛擬化平台上的 VM 虛擬主機,並非強調 2D/3D 繪圖功能 VDI 虛擬桌面的話,那麼在採購時便不需要追求處理器的「時脈(Clock Rate)」部分,而應該著重在 CPU 處理器的「核心(Cores)」數量方面,以便有效承載更多 VM 虛擬主機提高伺服器合併比率。

此外,除了應該確保硬體資源是否符合最低運作需求之外,在採購的實體伺服器到貨後在正式上線服務前,至少應燒機 72 小時以確保伺服器各項硬體元件皆運作正常。



CPU - 硬體輔助虛擬化(VT-x / AMD-V)

雖然 VMware 原生就支援「二進位轉譯(Binary Translation,BT)」技術,所以即便實體伺服器不支援「硬體輔助虛擬化技術(Hardware-assisted Virtualization,HV)」,仍然能在虛擬化平台上運作VM虛擬主機,但是僅限運作 32 位元作業系統並且將會影響運作效能。

因此,在選購擔任虛擬化平台的實體伺服器時,請選擇支援 CPU 硬體輔助虛擬化技術的中央處理器,以便透過硬體輔助虛擬化技術直接運作 VMM(Virtual Machine Monotor),有效率的提供給 VM 虛擬主機相對應的工作負載。

  • Intel 處理器: VT-x(Virtualization Technology)
  • AMD 處理器: AMD-V(Virtualization)


圖 2、Intel VT-x 硬體輔助虛擬化技術運作示意圖



Memory - 硬體輔助虛擬化(EPT / NPT)

解決虛擬化平台 CPU 工作負載的難題後,接著便是解決實體伺服器記憶體區塊、虛擬化平台記憶體區塊、VM 虛擬主機記憶體區塊,這三者之間快速對應且減少耗損的難題。

因此,在選擇實體伺服器的 CPU 處理器時,應挑選支援 MMU(Memory Management Unit)硬體輔助虛擬化技術。簡單來說,支援 MMU 硬體輔助虛擬化技術的 CPU 處理器,運作在虛擬化環境時將會透過 TLB(Translation Lookaside Buffer)機制,讓 VMM(ESXi)採用「陰影分頁技術(Shadow Page Tables)」機制,將 VM 虛擬機器的記憶體區塊對應到實體伺服器的記憶體區塊,有效減少 vSphere ESXi 虛擬化平台維護實體/虛擬記憶體區塊的工作負載,進而提升主機整體工作效率。

  • Intel 處理器: EPT (Extended Page Tables)
  • AMD 處理器: NPT(Nested Page Tables)或 RVI(Rapid Virtualization Indexing)


圖 3、Intel VT-x 硬體輔助虛擬化技術運作示意圖



IO - 硬體輔助虛擬化(VT-d / AMD-Vi)

最後,則是解決 I/O 快速對應且減少耗損的難題。因此,在選擇實體伺服器的 CPU 處理器時,應挑選支援 I/O MMU 硬體輔助虛擬化技術。

簡單來說,支援 I/O MMU 硬體輔助虛擬化技術的 CPU 處理器,運作在虛擬化環境時能夠有效處理 I/O DMA 傳輸及裝置中斷作業,也就是讓VM虛擬主機可以「直接存取(Direct Access)」伺服器硬體資源,例如,網路卡(VT-d、SR-IOV)...等,讓 VM 虛擬主機達到「原生(Native)」般的效能。

  • Intel 處理器: VT-d(Virtualization Technology for Directed I/O)
  • AMD 處理器: AMD-Vi(I/O Virtualization)或 IOMMU


圖 4、未支援 I/O 虛擬化(左圖)、Intel VT-d 硬體輔助虛擬化技術運作示意圖(右圖)



實體記憶體(Memory)

首先,應該要選擇支援 NUMA(Non-uniform memory access)架構的實體伺服器,以避免 CPU 處理器與實體記憶體之間的資料存取行為,因為跨越 NUMA 節點存取發生匯流排頻寬不足的問題導致存取發生瓶頸。

值得注意的是,當你採用支援 NUMA 運作架構的實體伺服器時,應該要將實體記憶體平均分配給每個 NUMA 節點,以避免因為某個 NUMA 節點記憶體空間不足,再次發生 CPU 處理器需要跨 NUMA 節點進行記憶體空間的存取。

圖 5、NUMA 架構運作示意圖

此外,VMware 虛擬化平台雖然擁有 TPS(Transparent Page Sharing)、Memory Ballooning、Memory Compression...等記憶體優化機制。但是,當您將為數眾多的 VM 虛擬主機運作在虛擬化平台上,且 ESXi 虛擬化平台記憶體優化機制都用盡但記憶體資源仍不足時,此時便會執行「Swapping」的動作(就像是 Windows 作業系統執行 Pagefile 的動作一樣),雖然暫時能因應記憶體空間的不足,讓 VM 虛擬主機能保持運作,但是將直接影響 VM 虛擬主機的運作效能。

因此,從 vSphere ESXi 5.0 版本開始,您可以規劃將 ESXi SWAP File 儲存在效能接近記憶體的 SSD 固態硬碟當中(支援 PCIe Flash Card、SAS/SATA SSD),同時還能結合 vFRC(vSphere Flash Read Cache)機制協同運作,以便虛擬化平台即使因記憶體資源不足產生 SWAP 時,仍能保持高效能的運作效率(請參考 VMware KB 2059285KB 2051647KB 2058983)。

圖 6、vFRC(vSphere Flash Read Cache)機制運作示意圖



儲存設備(Storage)

四大實體資源(CPU、Memory、Storage、Network),我們已經規劃好 CPU 及 Memory 的部分,接著另一個重要的環節就是「儲存設備(Storage)」。

目前,伺服器支援多種硬碟種類 SATA、NL-SAS、SAS、SSD、NVMe,而硬碟轉速也有 7200、10,000、15,000 RPM 等差別,磁碟陣列類型也有 RAID10、5、6...等,這些環節都會影響儲存資源整體的 IOPS(Input/Output Operations Per Second)效能表現。

簡單來說,儲存資源 IOPS 便是總合了 Random Read/Write 以及 Sequential Read/Write 的整體表現,在測試 IOPS 效能數據時 Sequential 的結果會比較亮眼,但是在實務上應用程式的資料存取行為通常為 Random Read/Write

此外,IOPS 效能並非只有硬碟介面及磁碟陣列模式會影響,還有包含其它快取機制在內,舉例來說,當伺服器安裝的磁碟陣列卡(RAID Card),加裝「快取(RAID Card Memory)」及「智慧型電池 (Battery Backup Unit,BBU)」之後,便能開啟資料「寫入快取 (Write Cache with BBU)」機制,這樣的快取機制能有效降低磁碟陣列模式,所導致的資料寫入效能處罰影響。

經過實務測試的結果,同一台實體伺服器同一片磁碟陣列卡,在加裝快取及BBU智慧型電池之後,啟用或停用寫入快取(Write Cache with BBU)後,在 IOPS 效能表現上大約會有「5倍」的差距。

圖 7、啟用或停用寫入快取,在 IOPS 效能表現上大約有 5 倍的差距

在儲存設備的選購上,應該選擇採購支援 vSphere Storage APIs(VAAI 及 VASA)功能,也就是具備硬體加速功能的儲存設備。

VAAI(vSphere Storage APIs-Array Integration)的部分,透過「Full Copy / Copy Offload」機制,可以有效減少 ESXi 在資料複製作業上的工作負載,例如,Storage vMotion,而 Block Zeroing 機制除了可以加快 Eager Thick Disk 的產生時間之外,對於 Lazy Thick Disk 及 Thin Disk 虛擬磁碟來說,可以有效提升 Write I/O 的效能表現。

VASA(vSphere Storage APIs-Storage Awareness)的部分,當 VM 虛擬主機儲存在支援VVols(Virtual Volumes)技術的儲存設備時,若需要進行複製作業的話系統便會透過 VASA API,執行 cloneVirtualVolume 的硬體式卸載動作進行處理。

此外,VAAI 及 VASA 卸載機制可以互相協同運作。舉例來說,當需要把啟用 VAAI 的 VMFS Datastore 內的資料,複製到 VVols(Virtual Volumes)當中進行資料交換時,將會使用 XCOPY VAAI 卸載機制來加速整個資料複製作業。

圖 8、VAAI、VASA 運作架構示意圖



網路卡(Network Adapter)

針對虛擬化環境中使用的網路卡方面,應盡量挑選可降低實體伺服器 CPU 工作負載的網路卡,例如,支援 Checksum Offload、TSO(TCP Segmentation Offload)、LRO(Large Receive Offload)、RSS(Receive Side Scaling)...等卸載功能。

圖 9、網路卡支援 LRO 技術 VM 虛擬主機可傳輸更大的網路流量

在網路卡選擇上應該選單埠(Single Port)、2 埠(Dual Port)或 4 埠(Quad Port)? 若實體伺服器 PCIe Slot 足夠的情況下,建議採用單埠(Single Port)的比較適合,並且當採用單埠 10Gb/s 網路卡時,應安裝在 PCIe x8 或 PCI-X 266 的插槽上,若採用雙埠 10Gb/s 網路卡時,則應該安裝在 PCIe x16,若採用 40Gb/s 網路卡則至少要安裝在 PCI Gen3 x8/x16 插槽上,這樣規劃的主要原因便為了避免傳輸瓶頸卡在 PCIe Slot 匯流排。

值得注意的是,應該要避免使用 Bridge Chip 的情況,例如,將 PCI-X 轉換為 PCIe,或將 PCIe 轉換為 PCI-X。因為這樣的轉換動作,將會造成屆時運作效能降低。

在網路卡與網路交換器之間的傳輸線材也值得注意,以前企業或組織網路環境中常用的 10/100/1000Base-T 線材 Cat 5e,最大傳輸只能達 1Gbps 而已(請注意 !! Cat 5 線材只能到達 100Mbps)。因此,若需要提升至 10Gbps 網路環境的話,除了實體伺服器的網路卡及網路交換器之外,傳輸線材也至少應採用 Cat 6aCat 7 等級的纜線(請注意 !! Cat 6 並無法符合 10Gbase-T 環境需求),才能達成在 10Gbase-T 網路環境中 100 公尺的最大理論傳輸距離。



BIOS 設定

首先,你應該先跟購買硬體伺服器的廠商確認,目前載入硬體伺服器中的 BIOS 版本已經是最新且穩定的版本。同時,若是升級 BIOS 版本的話則應該要再次檢查 BIOS 設定,因為很可能因為升級的關系導致 BIOS 設定被「重設(Reset)」了。

在實體伺服器 CPU 處理器的部分,我們已經選購支援硬體輔助虛擬化技術(VT-x、AMD-V、EPT、NPT),但是在 BIOS 當中也必須「啟用(Enabled)」特色功能才行,以採用 Intel CPU 的伺服器來說,通常在 BIOS 設定畫面中會看到「Virtualization Technology」項目,若採用 AMD CPU 的伺服器則為「AMD Virtualization」項目。

圖 10、BIOS 啟動硬體輔助虛擬化技術(VT-x / EPT / AMD-V / NPT)

若採用的實體伺服器 CPU 處理器支援 I/O 硬體輔助虛擬化技術(VT-d、AMD-Vi),也請在 BIOS 中「啟用(Enabled)」特色功能,以採用 Intel CPU 的伺服器來說,在 BIOS 設定畫面中將看到「Intel VT-d」項目,若採用 AMD CPU 的伺服器則會看到「AMD-Vi (IOMMU)」項目。

圖 11、BIOS 啟動硬體輔助虛擬化技術(VT-d、AMD-Vi)

HT(Hyper-Threading)」項目則視虛擬化運作環境需求後,由管理人員自行決定是否啟用或停用,因為 HT 機制雖然會將目前的核心數量提升一倍,但因為並非真正的運算核心(僅為邏輯運作),所以當多線程的應用程式要進行 SMP 平行運算時,可能會流生反效果讓運作效能更差。建議若運作的 VM 虛擬主機為企業服務(例如,SQL Server、Exchange Server),則應該「停用(Disabled)」HT 功能,但若是運作 VDI 虛擬桌面的話則建議「啟用(Enabled)」HT 功能。

圖 12、管理人員視虛擬化運作環境需求自行決定是否啟用或停用 HT 功能

若想要讓 ESXi 虛擬化平台保持在最高效率的運作狀態上,請將 BIOS 當中的 Intel Turbo Boost AMD Core Performance Boost 項目進行「啟用(Enabled)」。

圖 13、啟用 CPU 加速機制以保持最高效率的運作狀態

同樣的,當實體伺服器支援 NUMA 運作機制,除了實體記憶體應該平均分配之外,在 BIOS 中設定名稱為「Node Interleaving」,不同的是此項目必須設定為「停用(Disable)」才是啟用 NUMA 機制,該項目若設定為啟用(Enabled)反而是停用 NUMA 機制。

圖 14、將 Node Interleaving 項目設定為 Disabled 以啟用 NUMA 機制

在 BIOS 的電力設定部份,建議設定為「最高效能(High Performance)」,以保持實體伺服器在最高效率的運作狀態,或者設定為「OS Controlled Mode」將電力控制權交給 ESXi 虛擬化平台。

圖 15、電力設定調整為 High Performance 以保持最高效率的運作狀態

最後,則將實體伺服器上通常用不到的週邊裝置,直接在 BIOS 層級就停用以避免不必要的硬體資源浪費:

  • COM / LPT Ports
  • Floppy / CD / DVD Drives
  • USB controllers / USB Network Interfaces





3、ESXi / VM 基礎效能調校

在實體伺服器方面,我們選擇支援硬體輔助虛擬化技術後,當 VMware vSphere ESXi 虛擬化平台安裝完畢後,便能同時運作多台 VM 虛擬主機並有效率的共享底層硬體資源,並且也能將實體伺服器的虛擬化技術,傳遞給其上運作的 VM 虛擬主機例如,vNUMA、硬體輔助虛擬化技術...等。



ESXi – 電力配置優化

我們已經將實體伺服器的 BIOS 電力設定為最高效能,但是預設情況下 VMware vSphere ESXi 虛擬化平台的電源設定為「平衡(Balanced)」,也就是自動在運作效能及電力損耗之間取得一個平衡點。

因此,我們應該要將 ESXi 主機的電源計劃調整為「高效能(High Performance)」,此時便會觸發實體伺服器的 Intel Turbo BoostAMD Core Performance Boost 硬體加速技術,讓實體伺服器維持在最佳效率狀態(詳細資訊請參考 VMware KB 1018206)。

圖 16、將 VMware vSphere ESXi 電源計劃調整為高效能(High Performance)



ESXi – 啟用 CBRC 讀取快取機制

事實上,從VMware vSphere ESXi 5.0 版本開始,便原生支援 ESXi Host Caching 機制「CBRC(Content-Based Read Cache)」,此快取機制是從實體伺服器中切出一塊實體記憶體空間(最大支援至 2 GB),達成降低 ESXi 儲存資源的 Read I/O Requests 工作負載。

請開啟 vSphere Web Client 連接至 vCenter Server 後,依序點選【Hosts and Clusters > ESXi Hosts > Manage > Settings > System > Advanced System Settings】項目,便可以進行 CBRC 快取機制的設定。

在 CBRC 讀取快取機制設定視窗中,相關欄位的參數值設定及項目說明如下:

  • CBRC.DCacheMemReserved: 預設值為 400(單位為 MB),此欄位為設定從 ESXi 主機中,切出多少實體記憶體空間給 CBRC 讀取快取機制使用,最小數值為 100 最大則為 2048。
  • CBRC.DCacheSize: 預設值為 2048(單位為 MB),設定 CBRC Data Cache 總空間大小。
  • CBRC.DigestJournalBootInterval: 預設值為 10(單位為分鐘),在不影響 VM 虛擬主機啟動(Power On)作業情況下將延遲 10 分鐘後,才會啟動 Digest Journal 機制(保持預設值即可)。
  • CBRC.Enable: 預設值為 false,決定是否要「啟用(True)」Digest Reserved Cache Memory 快取機制。

圖 17、啟用 CBRC 讀取快取機制及設定 CBRC 快取空間大小



VM – 啟用硬體輔助虛擬化技術

當實體伺服器支援硬體輔助虛擬化技術後,那麼在 ESXi 虛擬化平台上的 VM 虛擬主機,若有需要的話也可以透過 ESXi 傳遞硬體輔助虛擬化技術進行使用。

請開啟 vSphere Web Client 連接至 vCenter Server 後,依序點選【Hosts and Clusters > VM Settings > Virtual Hardware > CPU > CPU/MMU Virtualization】項目,便可以進行傳遞硬體輔助虛擬化技術給 VM 虛擬主機的動作。

圖 18、傳遞硬體輔助虛擬化技術給 VM 虛擬主機



VM – 啟用 vNUMA

同樣的,當實體伺服器採購支援 NUMA 架構時,在虛擬化平台上的 VM 虛擬主機也可以正確感知 NUMA 架構,進而將 vCPU/vRAM 運作在同一個 NUMA 節點當中,以便增強運作效能。

在 vNUMA 設定的 vCPU 數量,則應該參考實體伺服器的核心數以倍數進行設定,舉例來說,假設實體伺服器每顆 CPU 處理器具備 6 Cores 的話,那麼 vCPU 的設定便以 6 為倍數進行設定,例如,6 vCPUs、12 vCPUs、18 vCPUs、24 vCPUs...等。

請開啟 vSphere Web Client 連接至 vCenter Server 後,依序點選【Hosts and Clusters > VM Settings > VM Options > Advanced > Configuration Parameters > Edit Configuration】項目,便可以進行 vNUMA 及 vCPU 數量設定。(請注意!! 當 VM 虛擬主機啟用 vNUMA 機制後,那麼 Hot Add vCPU/Memory 的功能將會自動停用。)

圖 19、VM 虛擬主機啟用 vNUMA 機制及設定 vCPU 數量



VM – 安裝 VMware Tools

在 VMware vSphere ESXi 虛擬化平台上運作的 VM 虛擬主機,都應該安裝 VMware Tools,除了將相關虛擬裝置進行最佳化之外,也與 ESXi Hypervisor 進行最緊密的結合。

圖 20、VM 虛擬主機應安裝並確保 VMware Tools 正常運作





4、結語

希望透過本篇文章的說明及討論,能為企業或組織在評估導入虛擬化平台之前,在實體伺服器的硬體元件規格及特色功能的選擇方面能提供良好建議。同時,針對 ESXi 虛擬化平台及 VM 虛擬主機方面,也提供基礎效能調校的建議方針,期望為讀者帶來虛擬化架構在規劃上及優化調校方面上的概念。