1、概述本文介紹了 Memory System Resource Partitioning and Monitoring(MPAM),這是 Arm 架構(gòu)的一個 optional addition 部分,用于支持內(nèi)存系統(tǒng)分區(qū)。MPAM 在 Arm 架構(gòu)參考手冊的 Memory System Resource Partitioning and Monitoring(MPAM)A-profile 體系結(jié)構(gòu)補充中有詳細文檔。 2、背景今天的許多計算需求都由共享內(nèi)存計算系統(tǒng)滿足,其中多個應用程序或多個虛擬機(VM)同時運行。共享內(nèi)存計算系統(tǒng)使應用程序或多個虛擬機能夠同時共享內(nèi)存資源。共享內(nèi)存資源可以降低設計成本和設計占地面積,提高性能,并大大減少冗余數(shù)據(jù)復制。 在理想情況下,每個共享應用程序或虛擬機應該在系統(tǒng)內(nèi)均勻或按比例利用共享資源。通過這樣做,系統(tǒng)內(nèi)固有的公平性水平可以確保應用程序或虛擬機不會不成比例地利用系統(tǒng)資源。否則,這可能會影響相鄰的共享應用程序或虛擬機的帶寬和性能。然而,在現(xiàn)實世界中,每個應用程序或虛擬機都會競爭資源,相互干擾。 內(nèi)存系統(tǒng)資源分區(qū)和使用監(jiān)控(MPAM)通過提供內(nèi)存資源分區(qū)和相關(guān)的監(jiān)控功能來幫助減輕這種效應。本指南將介紹 MPAM,其概念、用例和術(shù)語。---- MPAM 是一種可選擴展,主要是解決共享資源 (共享內(nèi)存) 競爭的問題。 3、MPAM 擴展Arm Memory System Resource Partitioning and Monitoring (MPAM) Extension 共享內(nèi)存計算系統(tǒng)的許多方面本質(zhì)上是作為操作系統(tǒng)或虛擬機監(jiān)控程序的基本操作的一部分進行管理的。例如,調(diào)度程序執(zhí)行 CPU 時間管理,而內(nèi)存分配器管理內(nèi)存分配。 內(nèi)存系統(tǒng)資源分區(qū)和監(jiān)控(MPAM)擴展了軟件協(xié)同管理內(nèi)存系統(tǒng)組件的運行時資源分配的能力,例如緩存、互連和內(nèi)存控制器。這些資源在其他情況下不會以這種細粒度受軟件控制。 這種資源控制需要運行時反應和持續(xù)跟蹤。這些要求是因為來自不同處理單元(PE)、安全狀態(tài)和異常級別的請求可能在運行不同的虛擬機或應用程序。 MPAM 通過使操作系統(tǒng)或虛擬機監(jiān)控程序等監(jiān)控軟件為每個虛擬機或應用程序分配唯一的分區(qū)標識符(unique partition identifier)來實現(xiàn)這一目標。這些唯一分配的分區(qū)標識符在內(nèi)存系統(tǒng)中貫穿它們的整個生命周期。內(nèi)存系統(tǒng)組件使用分區(qū)標識符來配置資源的分配給特定的虛擬機或應用程序。 MPAM 具有兩個功能:內(nèi)存系統(tǒng)資源分區(qū)和內(nèi)存系統(tǒng)資源使用監(jiān)控。這些功能為軟件提供了控制和監(jiān)控資源分配在虛擬機或應用程序之間如何分配的能力。然后,軟件可以提供適當?shù)捻憫墑e、公平性或有目的的不公平性。 3.1 內(nèi)存系統(tǒng)資源分區(qū)計算機系統(tǒng)上運行的程序的性能可以受到內(nèi)存系統(tǒng)性能的影響。內(nèi)存系統(tǒng)性能可以受到內(nèi)存系統(tǒng)內(nèi)部的多個共享資源的影響,這些資源包括緩存、互連和內(nèi)存控制器。在由多個虛擬機(VM)、操作系統(tǒng)(OS)和應用程序共享的內(nèi)存系統(tǒng)中,每個軟件環(huán)境可用的資源可能會有所不同,這取決于其他同時運行的程序。這是因為其他程序可能會消耗不受控制的內(nèi)存系統(tǒng)資源的更多或更少。 內(nèi)存系統(tǒng)資源分區(qū)(Memory-system resource partitioning)提供了對以前不受控制的內(nèi)存系統(tǒng)資源的限制和使用的控制。 內(nèi)存系統(tǒng)資源分區(qū)的一個示例是對緩存進行分區(qū),從而將來自特定 VM、OS 或應用程序的分配限制為總緩存資源的子集。 3.2 內(nèi)存系統(tǒng)資源使用監(jiān)控內(nèi)存系統(tǒng)資源使用監(jiān)控器測量資源使用水平或積累資源使用事件,具體取決于資源類型。以下是一些軟件如何利用內(nèi)存系統(tǒng)資源使用監(jiān)控的示例: · 動態(tài)利用內(nèi)存系統(tǒng)資源使用監(jiān)控收集的數(shù)據(jù),影響特定 VM、OS 或應用程序的內(nèi)存系統(tǒng)資源分區(qū)水平。 4、為什么使用 MPAM?內(nèi)存系統(tǒng)資源分區(qū)和使用監(jiān)控可以減少內(nèi)存系統(tǒng)干擾。本節(jié)描述了一些示例情景。 4.1 獨立軟件共享內(nèi)存系統(tǒng)隨著處理器速度的提高,通常將以前由兩個或多個系統(tǒng)執(zhí)行的功能集成到單一計算機系統(tǒng)中成本更低。如果這些以前分開的系統(tǒng)中的任何一個是實時或?qū)π阅苊舾械?,那么可能需要將該功能的性能與集成系統(tǒng)中的其他功能隔離開來。 內(nèi)存系統(tǒng)性能可以進行監(jiān)視,測量的使用情況可以指導系統(tǒng)分區(qū)的優(yōu)化。 分區(qū)通常由系統(tǒng)開發(fā)人員靜態(tài)確定。分區(qū)可以被賦予非共享資源分配,以減少由共享資源干擾引起的不確定性。所需的分區(qū)數(shù)量可能較少,類似于以前分開的系統(tǒng)的數(shù)量。 4.2 multi-tenant VM 服務器中的服務級別分配MPAM 可以用于減少在共享租戶虛擬機服務器上的 “嘈雜鄰居” 效應,以便沒有租戶能夠過度消耗資源。這允許軟件控制的硬件強制實施機制,以實現(xiàn)公平性隔離。嘈雜鄰居效應發(fā)生在應用程序或 VM 使用的可用資源超出了預期的情況下,通常會導致共享基礎架構(gòu)上的其他用戶的性能問題。 當服務器運行多個不同用戶的 VM 時,需要防止一個 VM 使用超出其服務級別協(xié)議(SLA)允許的資源。 MPAM 分區(qū)提供了一種調(diào)節(jié) VM 使用的內(nèi)存系統(tǒng)資源的手段。雖然只需要在服務器上預分配幾個服務級別,但每個 VM 都需要一個單獨的 PARTID,以便能夠?qū)υ?VM 的資源需求進行獨立響應。 4.3 前臺和后臺作業(yè)優(yōu)化當前臺和后臺作業(yè)在同一系統(tǒng)上運行時,前臺作業(yè)的響應時間不應受到損害,后臺作業(yè)的吞吐量應該得到優(yōu)化。 前臺和后臺作業(yè)的性能可以進行監(jiān)視,資源分配可以動態(tài)更改以跟蹤系統(tǒng)負載,同時優(yōu)化前臺響應時間和后臺吞吐量。 在 “Heracles: Improving Resource Efficiency at Scale” 中提出了這種方法的一個示例。該論文描述了一個只需要兩個分區(qū)的系統(tǒng),一個用于面向網(wǎng)絡的應用程序,另一個用于盡力而為的應用程序。Heracles 方法測量了網(wǎng)絡服務的尾延遲的服務級別目標,并調(diào)整兩個分區(qū)之間資源的劃分。資源使用監(jiān)控還用于調(diào)整特定資源的資源分配。 5、MPAM 是如何工作的?這一部分介紹了理解 MPAM 如何用于實施內(nèi)存系統(tǒng)資源分區(qū)和內(nèi)存系統(tǒng)資源使用監(jiān)控所需的關(guān)鍵概念。 5.1 MPAM 請求者MPAM 請求者是能夠傳輸 MPAM 信息包的請求者。實現(xiàn) FEAT_MPAM 的 Arm 處理器核心是 MPAM 請求者的一個示例,如 Cortex-A710。 5.2 MPAM 信息包MPAM 依賴于一種將分區(qū)標識符附加到執(zhí)行中的軟件(如 VM、OS 或應用程序)的機制。MPAM 通過將 MPAM 信息包傳播到所有下游內(nèi)存系統(tǒng)組件(MSC)來實現(xiàn)這一點。MPAM 信息包包括分區(qū) ID 空間、分區(qū)號(PARTID)和性能監(jiān)視組(PMG)。分區(qū) ID 空間和分區(qū)號一起用于在 MSC 內(nèi)唯一標識 MPAM 資源分區(qū)。 5.3 分區(qū)號(PARTID)分區(qū)號(PARTID)引用分區(qū) ID 空間內(nèi)的特定分區(qū)。分區(qū)號的數(shù)值沒有固有的含義。預計相關(guān)的 PARTID 空間管理器將為不同的 VM、OS 或應用程序分配唯一的分區(qū)號(PARTID)。PARTID 字段的最大寬度是 16 位,但 PE 實現(xiàn)可以支持小于最大寬度。例如,Cortex-A710 支持 6 位 PARTID。Arm 強烈建議系統(tǒng)中所有 PE 和 MSC 的 PARTID 大小相同。軟件只能使用系統(tǒng)支持的最小 PARTID 大小。 5.4 分區(qū) ID 空間MPAM 支持多個分區(qū) ID(PARTID)空間。MPAM 請求者的安全狀態(tài)確定了在 MPAM 信息包中發(fā)送的分區(qū) ID 空間。Arm 體系結(jié)構(gòu)定義了兩種安全狀態(tài):非安全狀態(tài)和安全狀態(tài)。當 PE 在安全狀態(tài)下執(zhí)行時,MPAM 信息包指示安全分區(qū) ID(PARTID)空間(MPAM_NS == 0x0)。當 PE 在非安全狀態(tài)下執(zhí)行時,MPAM 信息包指示非安全分區(qū) ID(PARTID)空間(MPAM_NS == 0x1)。 本指南不涵蓋 FEAT_RME 及其對 MPAM 的影響。RME 系統(tǒng)的 MPAM 將在未來的指南中討論。 5.5 性能監(jiān)視組(PMG)性能監(jiān)視組(PMG)為 MPAM 資源使用監(jiān)視器提供了額外的過濾器。PMG 擴展了 PARTID 監(jiān)視能力,可以以兩種方式使用: · 監(jiān)視器可以僅對 PMG 敏感,從而實現(xiàn)分組:它們監(jiān)視和匯總與具有相同 PMG 值的所有 PARTID 相關(guān)的測量。 PMG 字段的最大寬度是 8 位,但 PE 實現(xiàn)可以支持小于最大寬度。例如,Cortex-A710 支持 1 位 PMG。 5.6 PARTID 空間管理器PARTID 空間管理器是作為操作系統(tǒng)、虛擬機監(jiān)控程序或安全監(jiān)視器的一部分運行的軟件子系統(tǒng)。PARTID 空間管理器的功能未由 MPAM 體系結(jié)構(gòu)定義,但它是任何支持 MPAM 的軟件棧的組成部分。預計 PARTID 空間管理器將負責為應用程序、VM 或 OS 分配唯一的分區(qū)號(PARTID)和 PMG。MPAM 體系結(jié)構(gòu)支持多個分區(qū) ID(PARTID)空間,這意味著在大多數(shù)情況下,不需要不同的 PARTID 空間管理器之間的協(xié)調(diào)。 5.7 內(nèi)存系統(tǒng)組件(MSC)MPAM 感知系統(tǒng)依賴于 MPAM 感知的內(nèi)存系統(tǒng)組件(MSC)。MSC 處理由任何 MPAM 請求者發(fā)出的內(nèi)存請求。MSC 可以具有可分區(qū)資源,包括但不限于以下內(nèi)容: · 緩存內(nèi)存 PARTID 空間管理器配置 MSC 以分區(qū)其資源。MSC 內(nèi)的可分區(qū)資源根據(jù)特定資源分區(qū)控制的編程進行分區(qū)。對于每個內(nèi)存系統(tǒng)請求,MSC 使用 MPAM 信息包中提供的信息以及 MSC 的資源分區(qū)設置來確定特定 VM 或應用程序可以利用的可分區(qū)資源量。 5.8 MPAM 資源使用監(jiān)視器MPAM 資源使用監(jiān)視器可以為 PARTID 空間管理器提供可以由 MPAM 分區(qū)的資源類型的測量數(shù)據(jù)。每種監(jiān)視器類型都測量特定 PARTID 的內(nèi)存事務的使用情況,還可以選擇測量 PMG 的使用情況。 5.8.1 內(nèi)存帶寬使用監(jiān)視器內(nèi)存帶寬使用監(jiān)視器計數(shù)滿足指定篩選條件的有效載荷字節(jié)。 5.8.2 緩存存儲使用監(jiān)視器緩存存儲使用監(jiān)視器使用分區(qū)號(PARTID)、分區(qū) ID 空間和 PMG 來篩選緩存存儲使用情況。緩存存儲使用寄存器報告了分配給 MPAM 資源分區(qū)的篩選的緩存中當前存在的存儲量。 5.9 傳播 MPAM 信息MPAM 信息包需要通過內(nèi)存系統(tǒng)從 MPAM 請求者傳播到 MSC。通過內(nèi)存系統(tǒng)的路徑可以包括一個或多個 MSC。這些 MSC 將被稱為中間 MSC 或終止 MSC。中間 MSC 必須將未更改的 MPAM 信息包傳遞給下游。終止 MSC 不會從請求中轉(zhuǎn)發(fā) MPAM 信息包。MPAM 感知系統(tǒng)需要支持在 MPAM 請求者和 MSC 之間傳輸 MPAM 信息包的互連。 6、MPAM 使用模型將 VMs 和應用程序分配給分區(qū)的責任由 PARTID 空間管理器負責。虛擬機監(jiān)控程序的 PARTID 空間管理器分配 VMs 到分區(qū),操作系統(tǒng)的 PARTID 空間管理器分配應用程序到分區(qū)。每個內(nèi)存系統(tǒng)分區(qū)與 PE 上的軟件環(huán)境相關(guān)聯(lián),通過加載相應的 MPAMn_ELx 寄存器與 PARTID_I 和 PARTID_D 一起完成。每個異常級別都有自己的 MPAMn_ELx 寄存器。這意味著在執(zhí)行異常或從異常返回時,PE 會自動將相關(guān)的分區(qū)標識符附加到在該異常級別執(zhí)行時進行的內(nèi)存訪問。 虛擬機監(jiān)控程序和操作系統(tǒng)負責在切換 VMs 或應用程序時手動保存相關(guān) MPAMn_ELx 寄存器的上下文。在對稱多處理(SMP)環(huán)境中,一個 VM 或應用程序通常會同時在多個 PE 上運行。在這種情況下,我們預期分配給 VM 或應用程序的 MPAMn_ELx 寄存器中指定的唯一分區(qū) ID 在運行軟件的所有 PE 上是一致的。 一旦發(fā)出帶有 MPAM 信息包的內(nèi)存系統(tǒng)請求,它將通過一個或多個 MSC 流經(jīng)。MSC 將實現(xiàn)一個或多個分區(qū)控制接口,用于配置資源的分區(qū)。 6.1 內(nèi)存系統(tǒng)資源的控制接口MPAM 體系結(jié)構(gòu)定義了內(nèi)存系統(tǒng)資源的以下標準控制接口類型: · 緩存部分分區(qū)。 這些控制接口將在未來的 “了解架構(gòu) MPAM” 指南中詳細討論。 6.2 示例 MPAM 使用當配置了具有 MPAM 的 PE 發(fā)出內(nèi)存請求時,請求將附帶 MPAM 信息包發(fā)送。 MPAMn_ELx 寄存器是運行在 ELn 中的軟件的上下文的一部分。因此,在 EL0 中運行的應用程序在 MPAM0_EL1 中具有其 MPAM 狀態(tài),該寄存器由操作系統(tǒng)在應用程序之間進行上下文切換時保存和恢復。 MPAM 信息包將由關(guān)聯(lián)的 PARTID 空間管理器分配??梢灶A期 PARTID 空間管理器不是上下文切換過程的一部分。它的目的是在 OS 或虛擬機監(jiān)控程序請求時,從 PARTID 空間中提供一個未使用的 PARTID。這可能是一個相當少見的情況,例如在啟動新 VM 時。 在以下示例中,EL1 OS PARTID Space Manager 配置了與在非安全 EL0 上運行的當前調(diào)度的應用程序相關(guān)聯(lián)的 MPAM 信息包:非安全 EL1 PARTID Space Manager: MRS x0, xzr ORR x0, x0, #(0x2<<16) // EL1 PARTID_D == 0x2 ORR x0, x0, #(0x7<<0) // EL1 PARTID_I == 0x6 MSR MPAM0_EL1, x0 ISB 在 EL0 執(zhí)行時,任何內(nèi)存訪問都將使用上述配置的 MPAM 信息包發(fā)送。
在這里,系統(tǒng)顯示了兩個 MSC,一個系統(tǒng)緩存和一個內(nèi)存控制器: · 系統(tǒng)緩存使用 MPAM 定義的緩存最大容量分區(qū)控制接口,該接口允許 MPAM 管理器指定特定 MPAM 資源分區(qū)在緩存中可以分配的存儲容量量。 6.3 虛擬 MPAM如前所述,預計不同的 PARTID 空間管理器在分配 MPAM 資源分區(qū)時不會進行協(xié)調(diào)。為防止操作系統(tǒng)分配已由虛擬機監(jiān)控程序分配的 MPAM 資源分區(qū),虛擬機監(jiān)控程序需要一些機制來虛擬化由 Guest OS 分配的 MPAM 資源分區(qū)。MPAM 處理此情況的方式是允許虛擬機監(jiān)控程序通過模擬 MPAMIDR_EL1 寄存器告訴 VM 的操作系統(tǒng),VM 具有一些可使用的 PARTID。這些少量 PARTID 由虛擬機監(jiān)控程序的 PARTID 空間管理器預先分配,并存儲在 MPAMVPMn_EL2 寄存器中,將虛擬 PARTID 映射到虛擬機監(jiān)控程序預先分配的 “真實”(我們稱之為 “物理”)PARTID。VM 的操作系統(tǒng)可以管理虛擬 PARTID 的使用,無需陷入虛擬機監(jiān)控程序。如果沒有 MPAMVPMn 虛擬 PARTID 映射寄存器,EL1 和 EL0 需要陷入 MPAM1_EL1 和 MPAM0_EL1 的所有訪問。 來自 Guest OS 對所有 MSC 的配置寄存器和用于配置 PE MSC 的系統(tǒng)寄存器的訪問可以由主機虛擬機監(jiān)控程序進行模擬。這允許模擬虛擬 PARTID 映射并應用資源分區(qū)的虛擬機監(jiān)控程序策略。為實現(xiàn)這一點,對 MSC 的 MPAM 內(nèi)存映射寄存器的訪問將使用第 2 級翻譯進行陷阱,從而允許虛擬機監(jiān)控程序陷阱和模擬 MSC 訪問。 |
|
來自: 新用戶0118F7lQ > 《微信文章》