雲計算技術分享之 VMware vSphere Memory Metrics(內存指標)

vCenter的虛擬機監控選項卡提供了許多有關其使用的各種資源的非常有用的信息。其中之一是Memory,它包含許多指標,一開始可能會混淆,需要知道它們的含義以及如何處理它們。

雲計算技術分享之 VMware vSphere Memory Metrics(內存指標)

這裡不會描述所有這些內容,但會重點關注最有可能用於故障排除的主要內容。

首先定義一些術語,以避免在下一章中出現混淆。

Host physical memory:指系統上可用的虛擬機管理程序可見的內存。

Guest physicalmemory:指虛擬機中運行的Guest操作系統可見的內存。

Guest virtualmemory:指客戶操作系統嚮應用程序呈現的連續虛擬地址空間。它是在虛擬機內運行的應用程序可見的內存。它由主機物理內存支持,這意味著虛擬機管理程序提供從guest虛擬機到主機內存的映射。

VM監視選項卡的內置內存視圖僅包括“Guestvirtual memory”,“ active”,“ Ballooned”和“Granted”。

單擊“圖表選項”並添加要查看的指標,然後可以將其保存以便稍後通過單擊“將選項另存為...”進行快速訪問並輸入名稱。

雲計算技術分享之 VMware vSphere Memory Metrics(內存指標)

現在,讓我們開始使用內存指標

Consumed

此度量標準用於衡量分配給VM的計算機內存量。消耗的內存表示根據請求分配給VM的主機內存量減去VM間TPS(透明頁面共享)所節省的內存量。

計算消耗的主機內存的方法是計算VM訪問的唯一塊的數量,同時將共享塊除以訪問它的VM的數量。將總數乘以塊大小(即4K)。

這是VMware文檔中心的一個很好的例子。虛擬機1觸及3個唯一塊,但1與虛擬機2共享。

消耗的內存= 2 x 4K + 1 x(4K / 2)= 10K

如果禁用TPS,則塊“b”將在主機內存中寫入2次,因此虛擬機1的消耗內存值將為12K。請注意,出於安全原因,默認情況下僅為VM內共享啟用透明頁面共享,因此如果不更改設置,則不同的虛擬機將不共享主機的內存頁面(稍後將詳細介紹)。

雲計算技術分享之 VMware vSphere Memory Metrics(內存指標)

當VM接觸尚未分配的內存頁時,ESXi將分配內存並將其置於“已消耗”度量標準中。但是,主機很難知道虛擬機何時在guest虛擬機中解除分配頁面,因為即使它不再使用,它仍會在主機的內存中保留分配並仍然出現在使用的圖形中。

這就是為什麼你經常會看到Active和Consumed內存之間存在巨大差異的原因,這就是內存回收方法在爭用時發揮作用的地方(稍後會詳細介紹)。

從VMware的內存資源管理指南中提取:

“虛擬機內存釋放就像操作系統一樣,客戶操作系統通過將這些內存頁碼添加到guest虛擬機空閒列表來釋放一塊物理內存,但”釋放“內存的數據可能不會被修改。所有。因此,當釋放特定的客戶物理內存時,映射的主機物理內存通常不會更改其狀態,只會更改來賓空閒列表。

管理程序知道何時為虛擬機分配主機物理內存,因為從虛擬機到主機物理內存的第一次內存訪問將導致管理程序可以輕鬆捕獲的頁面錯誤。然而,由於客戶操作系統空閒列表通常不可公開訪問,因此管理程序很難知道何時在虛擬機內存釋放時釋放主機物理內存。因此,管理程序無法輕易找到空閒列表的位置並監視其變化。“

Granted

使用此度量標準來度量虛擬機內存。它說明了已提供給VM的guest虛擬機物理內存量。在觸及一次VM之前,不會將內存授予VM。與消耗的內存相反,焦點轉移到VM而不是主機。授予內存不會考慮VM內頁面共享,因為它會查看來賓物理內存。

消耗的內存= 5 x 4K = 20K

雲計算技術分享之 VMware vSphere Memory Metrics(內存指標)

如果要運行多個利用TPS共享內存的虛擬機,你會注意到消耗的內存將隨著共享內存的增加而下降,而授予的內存保持不變。可以在下圖中清楚地看到此模式。

雲計算技術分享之 VMware vSphere Memory Metrics(內存指標)

Active

該指標可能是最令人困惑的指標。在採取行動之前瞭解其意義非常重要,因為它可能會對VM的性能產生意想不到的負面影響。名稱似乎是明確的,你會認為“活動內存”代表訪客當前使用的實際內存。

不幸的是,它並不像看起來那麼簡單。

此度量標準的目的實際上是估計訪客使用的數量。為了實現這一點,主機需要監控每個被觸摸的頁面,但是,這樣做的開銷不值得付出努力。相反,主機將使用採樣機制來估計已觸摸的內存量。因此它代表VMkernel認為當前VM正在使用的內容。

現在有兩個需要注意的事項:

  1. 在採樣週期期間,觸摸的存儲器頁面的數量無論它們是否唯一,並且在先前的採樣週期中被訪問。因此,如果VM的活動內存在10個採樣週期內保持1GB,則表示您的VM可能已訪問1GB到10GB的RAM,即使vCenter在1GB上顯示直線
  2. 度量標準查找已觸摸的頁面的事實意味著它不一定反映客戶操作系統中正在發生的事情。一個明顯的例子是SQL數據庫,它將部分數據緩存在RAM中。DB可以在RAM中存儲20GB但在採樣期間只能訪問2GB,VM的活動內存值將為2GB但是如果你在Windows中看到你會看到22GB的RAM使用

此度量標準最初是為DRS創建的,用於獲取實時資源使用情況,以幫助在主機之間分配負載。由於這些原因,重要的是要了解該度量不得用於容量規劃或監視來賓OS的內存使用情況。對於後者,您應該使用像Zabbix這樣的“訪客感知”工具(即snmp或基於代理)。但是,如果VM具有高“活動內存”計數器,您將知道它正在內存中正常工作。

關於6.5中引入的功能的快速說明,允許您強制DRS使用消耗的內存而不是活動內存。這真是一個很好的功能,我一直在等待,特別是對於那些不會在主機上過度使用內存的客戶。

雲計算技術分享之 VMware vSphere Memory Metrics(內存指標)

Overhead

開銷內存佔VMkernel運行虛擬機所使用的機器內存量。其大小取決於虛擬CPU的數量和客戶機操作系統的已配置內存。VM需要一定量的內存才能啟動,這有資格作為開銷內存。

你可以在下面找到這些要求,但請注意,它並未涵蓋所有方案,僅包括最常見的方案。

雲計算技術分享之 VMware vSphere Memory Metrics(內存指標)

Shared

我們已經在之前的指標中涵蓋了一些關於透明頁面共享的內容,但還有很多內容可以說。共享內存指標反映了兩個或多個虛擬機共享的主機內存頁面的數量。如果虛擬機請求已經被另一個VM訪問的內存頁面,則主機將不會創建新的虛擬機,而是將現有頁面映射到VM,如果您願意,可以進行某種內存重複數據刪除。這有利於節省內存並允許更高級別的過度承諾。

ESXi通過運行以間隔掃描機會的後臺活動來確定可以共享哪些頁面的方式。您擁有的工作負載越多,您的內存共享就越大。可以使用高級設置Mem.ShareScanTime和Mem.ShareScanGHz控制間隔。為了識別哪些頁面相似,ESXi會創建它存儲在哈希表中的每個頁面。當VM請求的頁面生成表中已存在的哈希時,VM將映射到內存中的相應地址。

雲計算技術分享之 VMware vSphere Memory Metrics(內存指標)

請注意,出於安全原因,默認情況下禁用VM間頁面共享,並限制為VM內部。請參閱VMware 資源管理指南中的此摘錄。

“出於安全考慮,默認情況下禁用虛擬機間透明頁面共享,並且頁面共享僅限於虛擬機內存共享。這意味著頁面共享不會跨虛擬機發生,只會發生在虛擬機內部。已經引入了鹽析的概念,以解決系統管理員可能具有透明頁面共享的安全隱患的問題。Salting可用於允許更細粒度地管理參與透明頁面共享的虛擬機,而不是以前可能的。使用新的salting設置,只有當頁面的salt值和內容相同時,虛擬機才能共享頁面。可以配置新的主機配置選項Mem.ShareForceSalting以啟用或禁用salting“

關於TPS中鹽析概念的快速說明,其中鹽值用於生成散列。這意味著通過設置VM高級設置sched.mem.pshare.salt,您可以允許一組VM彼此共享內存。如果您有一堆已知具有類似用途的內存飢餓虛擬機,這可能會很有趣。有關TPS鹽漬的更多信息,請訪問KB2097593。

Ballooned

我們現在正在進行內存回收技術。

VMware虛擬增長功能利用客戶操作系統中安裝的VMware工具中包含的氣球驅動程序(vmmemctl)釋放內存,以便在發生爭用時將其返回給主機。請注意,如果已安裝的VMware工具未在guest虛擬機中運行,則虛擬機將無法使用虛擬增長。

雲計算技術分享之 VMware vSphere Memory Metrics(內存指標)

為了強制guest虛擬機釋放內存頁面,氣球驅動程序將通過增加操作系統上的內存壓力(Inflating)來模擬guest虛擬機中的內存爭用場景,這將使其使用自己的本機回收方法並釋放價值最低的頁面。

如果資源非常緊張,它將強制客戶操作系統將頁面交換到其虛擬磁盤。客戶操作系統本身決定交換哪些頁面這一事實是一件好事,因為它會選擇那些對系統影響最小的頁面,而不是主機在強制VM交換到頁面時會做的隨機頁面文件(.vswp),這很可能是重要的和訪問量很大的頁面,嚴重阻礙了性能......一旦完成回收,氣球驅動程序將停止並將頁面返回給主機(放氣)。

可以使用高級設置sched.mem.maxmemctl限制氣球驅動程序可以回收的內存量。

Compressed

內存壓縮是另一種用於容納過度使用的回收技術,它將嘗試壓縮內存頁並將它們存儲在VM內存的一小部分中。如果VM在壓縮後需要頁面,則這允許比交換更快的訪問。如果交換的頁面可以壓縮到2 KB或更小,它將存儲在虛擬機的壓縮緩存中,從而增加主機的容量。

雲計算技術分享之 VMware vSphere Memory Metrics(內存指標)

但是,如果頁面無法壓縮,它將被交換到磁盤(請參閱下一章)。用於存儲壓縮頁面的緩存的默認大小是VM內存空間的10%,但可以使用Mem.MemZipMaxPct高級設置(介於5和100%之間)進行更改。

Swapped

當事情開始變味時,內存交換就會發生。這是回收機制方面的最後手段,當TPS,氣球和壓縮無法節省更多內存時會調用它。它最能影響表演。

我們談到了在不斷膨脹的章節中交換,我們說在這種情況下,交換是由虛擬機內運行的客戶操作系統執行的,這意味著它知道要交換的最佳頁面。它們將被交換到虛擬磁盤,如果需要它們的性能仍然很糟糕,但這種情況發生的可能性較小(或者它不那麼重要)。這種類型的交換不會顯示在監視視圖中,因為它是在guest虛擬機內完成的。

與交換度量標準的不同之處在於,當氣球和壓縮完成其工作並且沒有更多內存可以清除時,ESXi將開始從VM內存中抓取頁面並將其放入其交換文件中的磁盤。當它發生時,沒有選擇哪個頁面最好交換,因為ESXi不知道它們有多重要。它基本上是一個被矇住眼睛的飛鏢遊戲,其VM的表現錄在了目標上。訪問換出頁面時的性能將是數據存儲的性能。

雲計算技術分享之 VMware vSphere Memory Metrics(內存指標)

請注意,默認情況下交換文件與VM一起存儲,但您可以在性能更好的存儲上指定一個位置,例如SSD支持的數據存儲,以便在系統內存不足時緩解一點痛苦。

你還會注意到2種不同類型的交換,無論是寫入磁盤還是返回內存。

SwapIn

它指的是從磁盤交換到內存的量。它是自虛擬機啟動以來從交換文件讀入主機內存的數據量。因此,如果由於內存爭用而過去交換的VM不再存在,那麼當VM訪問正在移回RAM的交換頁面時,您將慢慢看到SwapIn增加。

雲計算技術分享之 VMware vSphere Memory Metrics(內存指標)

SwapOut

交換是指VMkernel從機器內存寫入虛擬機交換文件的數量。如前所述,這與客戶操作系統交換不同。

雲計算技術分享之 VMware vSphere Memory Metrics(內存指標)

結論

管理內存是一件很棘手的事情,所以希望這篇文章能讓你更好地瞭解它是什麼。監視虛擬機內存的最佳方法是在guest虛擬機操作系統中執行此操作。


分享到:


相關文章: