微軟、Google、亞馬遜等雲計算巨頭,都在以各種“實例”(Instance)和按需付費的方式,向廣大客戶提供其雲端硬件資源。不過通常情況下,這些實例都會受到特定的CPU和內存配置的約束——意味著客戶智能從預設的幾個選項中進行挑選、而無法進一步細分配置。
(圖 via SemiAnalisis)
比如每多一個虛擬的 CPU 核心,就會往上添加 2GB 的內存。且在實例開啟的過程中,預先分配的 CPU 與內存資源也被單個客戶鎖定,而無法在全局環境中動態調節。
長期以來,超大規模企業一直在努力思考如何緩和這方面的資源浪費 —— 畢竟許多示例沒有充分利用其 DRAM,導致整個數據中心的使用效率低下。
以 Microsoft Azure 為例,其測量結果表明 —— 近半虛擬機從未使用超過 50% 的預分配內存資源,這樣的浪費是相當驚人的。
隨著 CPU 資源的觸頂,剩餘的內存資源無法物盡其用,微軟將這種狀態稱作內存擱淺(Memory Stranding)。
更讓人感到震驚的是,多達 25% 的 DRAM 在任何特定時刻都可能被擱置。
為大幅改善這種情況,Microsoft Azure 想到所謂的“內存池”(Memory Pooling)概念。
旨在允許 CPU 訪問其所需的盡可能多的內存、而不占用或擱置不需要那麼多 DRAM 資源的虛擬機。
好消息是,全新的 CXL 緩存一致性協議,已經得到各大主流硬件提供商的產品支持。
通過采用 CXL 硬件,微軟等數據中心運營商有望大幅降低其 DRAM 成本。
假如最終得到 9~10% 的整體 DRAM 優化,大型雲服務器提供商可輕松介紹數億美元的內存硬件開銷。
此外微軟估計,使用 CXL 和內存池技術,將使數據中心的服務器成本降低 4-5% —— 畢竟僅 DRAM 組件就占比超過 50% 。
性能方面,Microsoft Azure 團隊對一些使用本地 DRAM / 內存池的配置進行基準測試,不過性能損失 / 最佳效果還是取決於具體的應用程序。
一方面,Memory Pooling 會導致額外的 67-87 ns 延遲,導致某些應用程序的速度變得更慢。
另一方面,20% 左右的應用程序並未受到內存池的性能拖累,但有 23% 的應用程序性能損失不到 5% 。
此外 25% 的應用程序減速超 20%,12% 的應用程序減速超 30% 。
需要指出的是,這隻是微軟在首批 CXL 硬件上展開的早期測試。展望下一代硬件和新的 CXL 協議規范,Memory Pooling 還有望帶來更好的體驗。