每個虛擬機必須配置虛擬機實例及其工作負載正常運營所需要的處理器、內存以及存儲。資源需求取決于工作負載及其活動等級,因此為虛擬機配置數量合理的計算資源可能是一個棘手的問題。配置的資源太少,工作負載可能表現不佳,變得不穩定或者甚至是徹底宕機。分配太多的計算資源,超額的計算潛能可能被浪費掉,而且會增加業務運營成本。IT管理員必須是檢測虛擬機過度配置方面的專家,并采取正確的步驟調整資源使用。
為什么會發生過度配置
很多時候,管理員在一開始給虛擬機配置資源時就出錯了。需要計算或內存資源的工作負載的創建者明確提出需要更多的資源完成工作任務。但供應充足的資源與將額外的、根本不需要的資源丟給工作負載之間存在差異。
過度配置往往會發生,因為對特定的虛擬機而言管理員通常不知道哪些資源是必需的、適宜的,尤其是其負載情況一直在不斷變化。有時管理員認為虛擬機的性能可能會因無意中的資源匱乏而受到影響。最自然的反應是過度分配以保證問題被修復,同時也可以避免問題經常縈繞于管理員的心頭。
下意識的反應并不是一個很好的實踐,普遍缺少對應用的理解、規劃以及測試。在生產環境中部署工作負載前進行合理的測試有助于建立資源等級或邊界。某些IT工作人員還在堅持錯誤的概念是更多的資源等同于更好的工作負載性能。
VirtualQube是一家云供應商,該公司的CEO Scott Gorcester 說“顧客以及IT專業人員可能認為增加計算資源以及內存能夠改進虛擬機性能。但對虛擬機及其應用性能進行測試并進行正確的分析表明在某些情況下存在一個最有效的點,此時系統運行的最好,再增加更多的資源或者沒有影響,甚至還可能有副作用。”
例如,分配額外的vCPU看似免費,但某些軟件許可受處理器數量的影響,增加處理器可能會觸發意料之外的許可費用,增加虛擬機的運營成本。給虛擬機增加內存可能會減少一臺服務器能夠承載的虛擬機的數量。這限制了工作負載的整合舉措,削弱了工作負載的平衡方案,導致企業需要買比實際需求更多的服務器或存儲。這反過來導致了更高的運營成本及能耗,引發了對制冷的關注。
找到過度配置的虛擬機
如果沒有先判斷虛擬機是否過度配置,那么想解決虛擬機過度配置問題是不可能的。某些工具能夠為做出決策提供幫助。當虛擬機資源需求發生變化時IT專家依賴遠程監控及管理工具,比如Kaseya VSA 以及SolarWinds虛擬化管理器提醒員工。其他人選擇了與hypervisor廠商像匹配的工具。
W.P. Carey是一家不動產投資公司,該公司的網絡工程師及發布經理Aldo Cabrera說“我們主要使用vRealize洞察系統資源過度配置或資源配置不足的情況。還使用監控工具通過SNMP以及腳本觸發器直接對磁盤、網絡以及內存使用情況進行監控。”hypervisor平臺甚至可能包括性能計數器以及監控功能—比如vSphere的性能圖標、主機健康儀表盤、報表以及告警—其他工具比如VMware的esxtop命令行產品。
哪些因素能夠反應虛擬機資源存在過度配置的情況?
先考慮處理器利用率。處理器利用率臨時出現峰值是正常的,但處理器利用率持續居高不下—可能超過90%—表明存在過度配置。請記住很容易創建更多的vCPU并將其分配給虛擬機,但必須對每個vCPU進行調度并等待物理CPU以處理虛擬機的指令及數據。這導致了更高的就緒時間—通常超過了10%到20%—vCPU排隊等待物理處理器資源。這一類過度配置可能會降低服務器上的虛擬機性能。
對比同一臺服務器及不同服務器上有問題的虛擬機、其他虛擬機的性能報表。問題的根源往往是vCPU太多,虛擬機太多或者是有問題的虛擬機的CPU限制配置不當。減少不必要的已分配給虛擬機的vCPU,例如,為單線程的虛擬機分配兩個或四個vCPU浪費了計算資源,因為單線程應用只能夠使用一個vCPU。增加CPU份額優先級或者設置虛擬機CPU預留值允許vCPU更多地訪問物理CPU。工作負載平衡—將有問題的虛擬機遷移到具備更多可用資源的其他服務器—也可以減少運行在服務器上的vCPU數量。
配置問題還經常會擴展到內存分配。每個虛擬機應該稍微配置多一些的內存,服務器的內存容量要比所有虛擬機使用的總內存容量大一些。為虛擬機分配過多的內存沒有任何好處。定期檢查每個虛擬機的內存使用情況、可用內存大小以及活動、已分配的內存容量。
內存使用率過高達到95%或者空閑內存過低—5%或者更少—表明內存配置不足。活動內存經常等于已分配的內存,表明可用內存不足。這會導致大量的磁盤交換,影響虛擬機性能,hypervisor可能會使用具有侵略性的內存回收技術,比如內存膨脹以恢復并重用空閑內存。相反內存使用率過低、可用內存過高表明內存存在過度配置。在某些情況下減少不必要的高內存預留設置也能夠釋放額外的內存用于內存回收及重用。
存儲容量很少會直接影響性能,但仍有必要檢查分配給虛擬機的LUN并監控容量使用情況。給虛擬機分配一個不會用到的大容量LUN是對昂貴存儲容量的浪費。精簡配置有助于減少存儲浪費,因為實際安裝的物理磁盤容量只占邏輯卷容量的一小部分。例如精簡配置100GB的LUN但只分配10GB,然后再增加物理內存的成本要低很多。
監控容量并在已分配的容量用完前增加更多的物理磁盤空間是很重要的。此外,監控磁盤性能參數,比如延遲以確保存儲性能問題不會影響虛擬機性能。
合理分配資源
避免虛擬機過度配置的最佳方式是從一開始就給虛擬機分配最合理的資源,但實現虛擬機資源配置合理是一個棘手的問題。很多組織基于最初的分配決定與應用廠商進行詳細的溝通,假定廠商對應用及需求理解的最到位。
然而,將廠商的建議作為最終的結論可能并不明智。Gorcester 說:“客戶通知我們,他們的軟件廠商強烈建議配置48個內核、128GB的內存。調整系統后,我們配置了4個CPU核心、24GB的內存達到了最佳性能。配置了4個以上的核心后用戶體驗下降,而且不需要配置超過24GB的內存。”
IT員工的專業技能加上性能監控、測試、調優對于建立最好的資源配置以及最好的性價比同樣至關重要。先將已確定的最低資源分配給虛擬機,當工作負載需求發生變化時,觀察性能并預計變化情況。這是非常正常的,資源不足可以很容易地進行調整。Cabrera說:“最好是低配置或者堅持最低配置建議并進行后續的觀察。服務所有者可能不希望減少資源配置。配置合理并增加更多的資源往往受歡迎,但降低配置往往要更困難。”
借助任何資源恢復及工作負載平衡工具同樣能夠提供幫助。例如,使用hypervisor的資源恢復功能比如動態內存、內存膨脹以及透明頁共享。VMware的分布式資源調度及類似工具有助于調配虛擬機遷移并充分利用每個服務器的可用資源。實現了虛擬環境支持的虛擬機總數量的最大化同時為相關工作負載提供了最好的性能。
并非所有過度配置一定是不好的。配置合理的額外資源能夠提升工作負載性能,提升用戶體驗并獲得應用利益相關方的好感。但僅僅是配置更多的資源會浪費容量、經費,甚至對正在試圖改進的性能問題造成威脅。選擇正確的工具并對數據進行客觀的評價以做出正確的資源使用決策。