發布時間: 2020-07-09 09:44:50
?在我們服務器虛擬化的場景下,存在眾多虛擬機,也就意味著我們需要更多的內存供給虛擬機使用,可是在我們使用的過程中并沒有將所有的內存都使用完畢。因此我們在服務器虛擬化的場景下,就常常開啟智能內存復用技術來提高服務器的虛擬機密度。那么內存復用具體什么呢?
內存復用是指在服務器物理內存一定的情況下,通過綜合運用內存復用單項技術(內存氣泡、內存交換、內存共享)對內存進行分時復用。通過內存復用,使得虛擬機內存規格總和大于服務器規格內存總和,提高服務器中虛擬機密度。
通過內存復用技術將物理內存虛擬出更多的內存供虛擬機使用,使虛擬機內存規格總和可以大于主機物理內存,最終提高主機的虛擬機密度。內存復用三種方式:
內存共享:虛擬機之間共享同一物理內存空間,此時虛擬機僅對內存做只讀操作,當虛擬機需要對內存進行寫操作時,開辟另一內存空間,并修改映射
內存置換:虛擬機長時間未訪問的內存內容被置換到存儲中,并建立映射,當虛擬機再次訪問該內存內容時再置換回來
內存氣泡:Hypervisor 通過內存氣泡將較為空閑的虛擬機內存釋放給內存使用率較高的虛擬機,從而提升內存利用率
那么這幾種技術具體如何實現的呢?
正如內存共享,我們眾多虛擬機具有相同的操作系統,也具有相同的內存頁,內存共享將這些相同的內存頁統一在一起作為一個共享的頁,供給多個虛擬機同時讀取,即做到減少內存的使用,又能保證內存都可以被同時讀取到。而內存置換是使用服務的SWAP空間與內存空間進行置換實現可以置換出多余的內存給其他的虛擬機所使用。而內存氣泡的原理則是Balloon Driver從源虛擬機申請可用內存頁面,通過Grant Table授權給目標虛擬機,并更新虛擬機物理地址和機器地址映射關系表。
打開內存復用功能后,由內存復用策略接管物理內存的分配,在內存不緊張時虛擬機可以使用全 部物理內存。當出現競爭時,由內存復用策略為虛擬機實時調度內存資源,綜合運用內存復用技術 釋放虛擬機的空閑內存,為其他虛擬機的內存需求提供條件。
綜上所述通過內存復用技術,可降低運營商或企業的成本。
當計算節點的內存數量固定時,可以提高計算節點的虛擬機密度。
當計算節點的虛擬機密度固定時,可以節省計算節點的內存數量。
那么內存復用對我們的環境有什么要求呢?
1. 如果集群下存在使用 iNIC 網卡的主機,則不能開啟集群內存復用功能。
2. 每個計算節點上運行的所有虛擬機的預留內存之和不能大于虛擬機使用的實際可用物理內存總和。
3. 同時開啟主機內存復用和 Guest NUMA 或者同時開啟主機 CPU 資源隔離模式和 Guest NUMA,會導致 Guest NUMA 功能失效。
可能這時候就有同學問我,那這個內存復用這么好,我這么啟動呢?我們在通過VRM管理界面的集群資源控制,對CAN主機的內存復用進行開/關操作。
是的,主機內存技術只能同時開啟,也只能同時關閉,不能說單獨開啟內存共享、內存置換或內存氣泡功能。而內存復用我們一般而言比值推薦最高到達150%。這樣不會太影響虛擬機的業務,也可以更好的提高服務器的利用率。不過內存復用技術的開啟是導致虛擬機性能下降,所以如果是重要業務的虛擬機,我們不建議開啟。
通過此篇文章,你是否有了解到關于內存復用技術的內容?更多關于FusionCompute的特性,我們后續繼續介紹哦。
下一篇: 【人工智能】機器學習—超參數調優