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