MPAM(Memory System Resource Partitioning and Monitoring)[1]特性用于解決混部業務時由于共享資源競爭帶來的性能下降問題,MPAM 作為繼 x86 RDT[2]技術后的另一個針對 CPU 訪存系統資源隔離的全新特性倍受關注,相比其他架構的類似特性,Arm64 架構下的 MPAM 特性采用全新的確定性流控方式,控制手段更加豐富,控制對象覆蓋更廣,目前在鯤鵬服務器上的應用取得了良好的結果。openEuler kernel 已于 openEuler 21.03 創新版本支持 MPAM,成為首個同時支持 x86 RDT 和 MPAM 的開源平臺;MPAM 項目組聯合下游各大廠商及研究機構在 POC 場景上做了驗證,使能 MPAM 并在云場景下進行了多個測試點的適配和測試,解決了不同虛擬機因為 Cache 和訪存干擾帶來的性能干擾問題,目前已具備相當的成熟度;為支撐下游廠商使用 MPAM,構建完整端到端基礎軟件棧,項目組后續還會在 openEuler 推出一系列配套調測工具和部署軟件。
特性介紹
如何處理諸如 L3 Cache 等內存系統資源競爭的問題一直是業界研究的焦點,例如 Kpart[3],DICER[4],dcat[5],這些研究為工業界應用共享資源隔離技術打下了基礎。MPAM 是 Arm Architecture v8.4 的 Extension 特性,其目的是用于解決服務器系統中,混部不同類型業務時,由于 CPU 訪存過程中共享資源的競爭帶來的某些關鍵應用性能下降或者系統整體性能下降的問題。
MPAM 系統框架參考圖 1,相比其他架構的類似特性,MPAM 設計上參考了更多前沿技術,MPAM 最顯著的特征是:
提供更多控制手段,針對 Cache 資源以及訪存通道,增加了對訪存流的優先級控制和完全隔離控制;
按照 Cache way 為粒度,以 bitmap 的形式分配 Cache way,不要求所分配的 Cache way 在 bitmap 中連續;
MPAM 支持在虛擬機內部劃分共享資源;
MPAM 增加了對 SMMU 的支持,可以限制 IO 設備對 Cache 和相關內存系統資源的使用;
從體系結構角度優化·最佳配置,在對訪存流的限制上,MPAM 流控方式可精確控制訪存流百分比,可以確定性地保障訪存敏感型業務的性能。
圖 2 MPAM 和 RDT L3 Cache 控制方式異同 如圖 2,MPAM 規定配置 Cache 主要有兩種方式,一種是通過優先級配置,這種情況下,優先級高的業務流將優先使用 Cache 的使用權;第二種是以 Cache way 為粒度,按照 bitmap 形式隔離不同業務對 Cache 的使用,不要求 Cache way 分配連續,這也是目前鯤鵬 920 采取的控制方式。x86 RDT 目前僅支持第二種,且大部分型號要求 Cache way 分配連續[6]。圖 3 為鯤鵬 920 和常用 x86 型號 RDT 特性對流量控制的比較,對比其他架構的類似特性,MPAM 在流量控制上的最大特點是參考當前 DDR 通道的傳輸能力,從而對業務流限制一個明確的上下限,若當前受控流量超過該 DDR 通道設定百分比對應的上限流量時,則限制到該百分比以下,同時在小于下限流量時享有優先訪問權。對比 x86 RDT,其限制流量的動作發生在 L2 和 L3 之間,使用給受控流量主動加時延的方式降低目標流量[6]。
圖 3 鯤鵬 920 MPAM 與 x86 RDT 流量限制上的異同 除此之外,MPAM 協議規定了額外兩種流量控制方式,如圖 4 所示,一種是采用 bitmap 的方式完全隔離開不同的業務流,被隔離的業務流將會按照 bitmap 劃分的時間片分區間輪詢使用訪存通道;第二種,在第一種方式的基礎上,還可使用優先級方式調整業務流的優先級,在發生訪存擁擠時,同一時刻高優先級業務流將優先享有該 DDR 通道。
圖 4 MPAM 帶寬的完全隔離和優先級控制方式 MPAM 可以在更多維度靈活配置業務對 Cache 和帶寬的使用,適應更多的應用場景,易于獲得更大的優化空間。
特性使能
硬件支持:鯤鵬 920[7]
內核支持:openEuler 21.03 或 openEuler 20.03 LTS SP1[8]
用戶手冊:https://gitee.com/openeuler/openRSO/blob/master/docs/manual/arm_mpam_resctrlfs_user_interface.md
鯤鵬 920 已支持 MPAM 特性的部分功能,如圖 5 所示:
圖 5 鯤鵬 920 MPAM 所使能功能
cpbm: Cache Portion Bit Map,按照位圖控制分配特定容量和特定位置的 L3 Cache,其中每個 bit 代表一條 Cache way;
max: Memory Bandwidth Maximum Partition,按照能夠通過受控 DDR 通道最大帶寬的百分比進行訪存流量限制;
min: Memory Bandwidth Minimum Partition,提供最小帶寬百分比表示允許通過受控 DDR 通道的容量,小于最小百分比將享受較高優先級的通過權;
hdl: Memory Bandwidth Hard Limit,開啟會使得分區的帶寬使用率降至最大帶寬控制的范圍之內,參考 Max,否則,只有在通道擁擠時才會做適當限制;
Monitoring: Cache/Memory Bandwidth monitoring,對 L3 Cache 占用大小和訪存帶寬大小進行實時監控。
性能測試
硬件平臺:鯤鵬 920 @CORE 96 2.6GHZ
DDR:Configured Memory Speed: 2666 MT/s
OS:openEuler 21.03
BIOS:Taishan 170
基礎功能指標
圖 6 實驗一 MPAM 單 workload L3 Cache 分配和監控實驗一
workload: numactl –m 0 bw_mem –P 8 –N 4 128M rd如圖 6 所示,啟動一個 workload,workload 也可自行選擇,對 L3 Cache 按 cpbm 分配,通過 MPAM 的 monitor 查看 workload 占用的 L3 Cache 容量變化,可見 workload 真實占用的 Cache 容量和理論大小基本一致。
圖 7 實驗二 MPAM 雙 workload Cache 隔離實驗二
workload1: numactl –m 0 stress-ng –cache 10 --aggressive workload2: numactl –m 0 bw_mem –P 8 –N 4 128M rd如圖 7 所示,啟動兩個 workload,使用 cpbm 方式對兩個 workload 做 Cache 隔離測試,通過 MPAM 的 monitor 查看 workload 占用的 L3 Cache 容量變化,該測試分為兩部分,前四組為 Cache way 完全隔離測試,后兩組為 overlap 測試,可見 Cache 隔離效果與理論值基本一致,后兩組實際效果與 workload 對 Cache 的占用強度有關。
圖 8 實驗三帶寬最大百分比調控實驗三
workload: numactl –m 0 bw_mem –P 8 –N 4 128M rd如圖 8 所示,在大流量下和中小流量下(當前 DDR 通道最大帶寬約為 75MB/S)對帶寬做最大百分比調控,通過 MPAM monitor 查看 workload 對應流量大小變化,可見流量控制效果基本與預期相符,鯤鵬 920 上 MPAM 設定的帶寬控制有效百分比約在 20%-80%。
spec CPU 2006 測試
選用 spec CPU 2006 omnet 測試套和 spec CPU 2006 milc,分析 Cache 干擾:cpu+內存型業務混合部署場景下,通過 CPBM 隔離 L3 Cache 可以削弱不同業務對 Cache 的競爭,提升性能,如圖 9 所示,非隔離時兩種業務之的 Cache 實際占用大小波動非常大,這是造成性能下降的主要原因。
圖 9 MPAM spec 2006 L3 Cache 隔離測試[9] 通過對兩組業務的 Cache 進行完全隔離,可以看到隔離后的業務 Cache 實際占用大小波動明顯減少,對比不做隔離的情況,omnet 業務最終獲得了 10+%的性能提升,milc 業務性能也略有提升。
DPDK 隔離帶寬干擾
裸機場景下,使用 pktgen+DPDK 進行試驗,并對 DPDK 施加帶寬壓力,使用 MPAM 對比隔離前后 DPDK 性能變化:
solo加壓加壓+MPAM限制帶寬20%
每秒平均指令數2E+09 + 5E+071.7E+092E+09 + 4E+07
指令數下降比NA22%0.7%
dpdk性能下降NA≈21%≈0
如表 1 所示,可知加壓后導致性能退化 22%左右,加壓參數參考[9],使用 MPAM 限制壓力程序 20%帶寬,DPDK 性能恢復正常。
圖 10 RDT 和 MPAM DPDK 場景測試[10][11]
內存大頁+Cache 隔離
如圖 11 所示,網絡轉發業務選用 2G 內存大頁,左圖不同線程之間存在穩定的 Cache 干擾,右圖表示性能下降比例,通過隔離 Cache 可消除該干擾,保證關鍵業務的性能。
圖 11 內存大頁和 MPAM Cache 隔離測試網絡轉發業務[9]
開放生態
資源隔離是 OS 中非常重要的一個組成部分,針對 cpu 核訪存側的隔離技術又是資源隔離中的一個重要組成部分,如何規劃好未來對內存系統資源的高效使用,對保障業務在更加復雜的平臺上穩定運轉至關重要。為減少跨平臺成本,豐富調試手段,提升業務部署效率,我們希望歸一化不同架構的輸出接口,開放應用端到端統一部署框架,針對不同場景定制化通用化的資源隔離調度引擎,構建一整套應用資源管理基礎軟件棧。
圖 12 共享資源調控基礎軟件框架我們計劃在 openEuler 開源一套共享資源調控基礎軟件框架,用于跨平臺統一管理業務使用 Cache 及相關內存系統資源,通過引入豐富、實用的調試工具幫助用戶排查相關性能問題,并增加通用資源調度引擎處理針對不同場景下的資源動態調控問題,按照部署業務的層級整合和編排共享資源的使用,方便用戶部署業務和整合系統資源分配。針對 MPAM 技術,目前已和通信行業、電商、云服務商等合作領域企業進行溝通合作,并已在部分場景上取得成效,歡迎業界專家建言獻策,共同打造實用,穩固,開放的底層資源隔離基礎軟件底座。
原文標題:openEuler 21.03 特性解讀 | CPU 共享資源隔離的利器 - MPAM
文章出處:【微信公眾號:Linuxer】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
cpu
+關注
關注
68文章
10878瀏覽量
212169
原文標題:openEuler 21.03 特性解讀 | CPU 共享資源隔離的利器 - MPAM
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論