當心影響vSphere性能的幕后黑手
VMware虛擬機可能會遭遇意外的、未發現的和不必要的資源限制。識別和消除這些限制可以改善vSphere性能并幫助虛擬機達到用戶的預期。
VMware vSphere支持管理員限制虛擬機資源,但這可能會導致無意中添加限制。對虛擬機的定期健康檢查可以發現虛擬機的意外CPU或RAM限制,這些限制毫無理由地降低了vSphere的性能。一旦發現,您可以移除這些對虛擬機的資源限制。但是請注意:消除資源限制,即使是意外的限制,也可能產生消極影響:在某些情況下,你需要保留這些限制。
管理虛擬機資源
在資源供不應求的情況下,VMware vSphere的資源提供規則確保了平和的、可預知的性能降低。在資源超配的時候,執行這些規則是幾乎所有vSphere部署的選擇,而不是投資買入更多的物理服務器。保留規則可以確保最小資源需求,這樣虛擬機可以提供滿足服務級別的服務。共享規則可以幫助控制在資源需求超出供應時,哪臺虛擬機可以獲取相對應的資源。這些可以確保在有限物理資源內最大化業務利益。
同樣是限制,差別很大。也有可能是限制提供給虛擬機的最大物理資源數量,即使現在還有很多可用CPU或RAM資源。這樣的限制阻止了虛擬機獲得更多可用資源,會導致其性能低于不添加限制的情況。因為不必要地限制了vSphere的性能,通常對虛擬機是負作用。
如何發現并改變資源限制
無意識的虛擬機資源限制起源于vSphere的管理平臺vCenter的一個bug。有段時間當虛擬機來自于模板的轉化或克隆時,可用RAM限制于模板配置的數量。因此,每個從該模板部署的虛擬機都受到同樣的限制。即使當虛擬機配置了更多的RAM資源,該限制依然保留,因此虛擬機無法使用額外的可用RAM,性能也無法提升。可以想象一下,當發現虛擬機慢的原因是RAM限制,然后必須重復很多次整個創建過程去為虛擬機配置更多內存,否則虛擬機的性能無法改善。
通過vSphere客戶端的Resource Distribution頁面可以很容易識別這種限制。該頁在Distributed Resource Scheduler集群、單獨的宿主機和資源池中都可以看到。列出了對所有對象的共享、保留和限制。
通過命令行發現限制,可以打開PowerCLI使用Get-VMResourceConfiguration commandlet。如果CpuLimitMhz 和MemLimitGB 的鍵值不是-1,虛擬機就有資源限制。vCheck script for PowerCLI功能很強大,其中之一就是可以報告所有帶有CPU或RAM限制的虛擬機。如果您寫了自己的腳本,可以使用 Set-VMResourceConfiguration cmdlet移除限制。
在移除了對所有虛擬機的限制之后,它們可以訪問更多的資源。如果系統內有足夠的可用CPU和RAM,資源的利用率得到提升,改善了虛擬機的性能。但是,如果空閑資源的數量不多,系統的其它地方可能會出現性能問題。在資源緊張的系統上增加壓力會導致資源競爭的加劇。即使這樣,移除資源限制可以減輕存儲負擔,因為對RAM的限制會導致虛擬機使用頁面緩沖區。虛擬機對緩沖區的使用越少對存儲壓力越小。
資源限制有自己的用武之地。如果vSphere用戶只為自己使用的資源付費,通過限制為系統添加了成本上限。然而,使用資源池的限制來代替對虛擬機的限制是個好辦法。可以很好地把項目、業務單位或客戶可用資源限制在其購買的范圍內。