該軟體包為英特爾(R) 資源管理器技術(英特爾(R) RDT) 和英特爾(R) I/O 資源管理器技術(英特爾(R) I/O RDT) 提供基本支持,包括: 快取監控技術(CMT) 、記憶體頻寬監控 (MBM)、快取分配技術 (CAT)、代碼和資料優先權 (CDP) 以及記憶體頻寬分配 (MBA)。
原則上,軟體在硬體線程的基礎上透過模型特定寄存器(MSR)對技術進行程式設計。 MSR 存取是透過標準作業系統驅動程式安排的:Linux 上的 msr 和 FreeBSD 上的 cpuctl。在最常見的架構實作中,透過 CPUID 指令檢測技術的存在。
在有限數量的特殊情況下,特定 SKU 在架構上不支援 CAT(而是存在非架構(特定於模型)實現),可以透過品牌字串檢測到。該品牌字串是從 CPUID 中讀取的,並與已知支援的 SKU 表進行比較。如果需要,最後的檢查是探測特定的 MSR 以發現硬體功能,但建議盡可能使用 CPUID 枚舉。
從軟體版本 v1.0.0 開始,該程式庫新增了透過可用作業系統介面(Linux 上的 perf 和 resctrl)使用 Intel(R) RDT 的選項。該庫檢測這些介面的存在,並允許透過配置選項選擇首選介面。因此,「pqos」或「rdtset」等現有工具也可用於以作業系統相容的方式管理英特爾(R) RDT。從 v4.3.0 版本開始,作業系統介面成為預設選項。新增了“pqos”工具包裝器以幫助進行介面選擇。 'pqos-os' 和 'pqos-msr' 分別用於 OS 和 MSR 介面操作。
PID API 編譯時選項已被刪除,API 始終可用。請注意,這些 API 的正確操作取決於作業系統介面的可用性和選擇。
該軟體包在 https://github.com/intel/intel-cmt-cat 上維護、更新和開發
https://github.com/intel/intel-cmt-cat/wiki 提供常見問題、使用範例和有用的連結。
請參閱 INSTALL 檔案以取得軟體包安裝說明。
“lib”目錄:
包括提供用於技術檢測、監控和分配的 API 的軟體庫檔案。有關更多詳細信息,請參閱庫自述文件 (lib/README)。
“lib/perl”目錄:
包括 PQoS 庫 Perl 包裝器。更多詳細資訊請參閱介面 README (lib/perl/README)。
“lib/python”目錄:
包括 PQoS 庫 Python 3.x 包裝器。更多詳細資訊請參閱介面 README (lib/python/README.md)。
“pqos”目錄:
包括提供對英特爾(R) RDT 命令列存取的實用程式的來源檔案。該實用程式連結到庫並透過其 API 對技術進行編程。有關更多詳細信息,請參閱實用程式自述文件“pqos/README”。 「pqos」實用程式的手冊頁也提供了有關工具使用的資訊: $ man pqos
“rdtset”目錄:
包括為 RDT 配置提供類似「任務集」功能的公用程式的來源檔案。該實用程式連結到庫並透過其 API 對技術進行編程。有關更多詳細信息,請參閱實用程式自述文件“rdtset/README”。 「rdtset」實用程式的手冊頁也提供了有關工具使用的資訊: $ man rdtset
“appqos”目錄:
包括應用程式的來源文件,允許將應用程式分組到基於優先順序的池中。每個池都分配有英特爾(R) RDT 和英特爾(R) SST 配置,這些配置可以在啟動時或在運行時透過 REST API 進行設定。有關更多詳細信息,請參閱應用程式自述文件“appqos/README”。
“appqos_client”目錄:
包括應用程式 QoS 用戶端 Web 應用程式的來源檔案。該應用程式提供了一個簡單的使用者介面,用於在運行應用程式 QoS 的系統上遠端配置英特爾(R) RDT 和英特爾(R) SST。有關更多詳細信息,請參閱應用程式自述文件“appqos_client/README”。
“範例”目錄:
包括透過庫 API 使用英特爾(R) RDT 的 C 和 Perl 範例。有關更多詳細信息,請參閱自述文件“examples/README”。
“snmp”目錄:
包括用 Perl 編寫的 Net-SNMP AgentX 子代理,以演示 PQoS 庫 Perl 包裝 API 的使用。有關更多詳細信息,請參閱自述文件“snmp/README”。
「工具」目錄:
包括 membw 工具,用於透過不同的操作來強調記憶體頻寬。
“srpm”目錄:
包括軟體包的*.src、*.rpm 和*.spec 檔案。
“更改日誌”檔案:
版本之間變化的簡要描述。
“安裝”檔案:
安裝說明。
“許可證”文件:
軟體包的許可證。
“單元測試”目錄:
單元測試
支援的產品可在英特爾® 資源調配技術(Intel® RDT)架構規範的附錄 A 中找到:https://www.intel.com/content/www/us/en/content-details/789566/intel-resource -director-technology-intel-rdt-architecture-specification.html
附錄 B 包含具有特定型號英特爾® RDT 功能的處理器清單。
注意:偵測特定於模型的功能需要在使用函式庫和實用程式時設定RDT_PROBE_MSR
環境變數。這些功能僅在使用 MSR 介面時可用。有關詳細信息,請參閱下面的“接口”部分。請參閱 wiki 以取得使用範例。
有關英特爾(R) RDT 的更多詳細信息,請參閱英特爾(R) 架構軟體開發手冊,網址為:https://www.intel.com/content/www/us/en/develop/download/intel- 64-and -ia-32-architectures-sdm-combined-volumes-1-2a-2b-2c-2d-3a-3b-3c-3d-and-4.html 具體資訊可參考第3a 卷第17.18 和17.19章。
Linux 是目前主要支援的作業系統。該軟體有一個 FreeBSD 端口,但由於驗證範圍有限,現階段仍處於實驗階段。儘管大多數現代 Linux 核心都包含對 Intel(R) RDT 的支持,但 Intel(R) RDT 軟體包早於這些擴展,並且可以在有或沒有核心支援的情況下運行。英特爾(R) RDT 軟體可以偵測並利用這些核心擴充來添加功能,但也與舊核心相容。
Linux 核心對 Intel(R) RDT 的支援最初是透過 CMT 和 MBM 的 Linux perf 系統呼叫擴展引入的。最近,Resctrl 介面新增了對 CAT、CDP 和 MBA 的支援。在現代 Linux 核心上,建議在可用時使用核心/作業系統介面。有關這些介面的詳細資訊可以在 resctrl_ui.txt 中找到。該軟體包 Intel(R) RDT 仍可在所有 Linux 核心版本中無縫運行。
英特爾(R) RDT 軟體庫和實用程式提供兩個介面來對英特爾(R) RDT 技術進行編程,即 MSR 和作業系統介面。
MSR 介面用於透過直接對硬體(MSR)進行程式設計來配置平台。這是傳統接口,不需要英特爾(R) RDT 的核心支持,但僅限於監控和管理每個核心的資源。
作業系統介面後來被加入到套件中,選擇後,該函式庫將利用 Linux 核心擴充來對這些技術進行程式設計。這允許在每個核心/進程的基礎上監視和管理資源,並且應該在可用時使用。
請參閱下表,以了解有關何時將英特爾(R) RDT 功能(MSR 和作業系統)支援新增至軟體包中的更多資訊。
英特爾(R) RDT 版本 | RDT 功能已啟用 | 需要核心版本 |
---|---|---|
0.1.3 | L3 CAT、CMT、MBM | 任何 |
0.1.4 | L3 CDP | 任何 |
0.1.5 | L2 電腦輔助翻譯 | 任何 |
1.2.0 | 工商管理碩士 | 任何 |
2.0.0 | L2 CDP | 任何 |
5.0.0 | 輸入/輸出RDT | 任何 |
英特爾(R) RDT 版本 | RDT 功能已啟用 | 需要核心版本 | 推薦介面 |
---|---|---|---|
0.1.4 | CMT(性能) | 4.1 | 海上絲路 (1) |
1.0.0 | MBM(表現) | 4.7 | 海上絲路 (1) |
1.1.0 | L3 CAT、L3 CDP、L2 CAT(Resctrl) | 4.10 | 僅用於指派的作業系統(MBA 除外) 用於指派 + 監控的 MSR (2) |
1.2.0 | MBA(休息) | 4.12 | 僅用於指派的作業系統 用於指派 + 監控的 MSR (2) |
2.0.0 | CMT、MBM(Resctrl) | 4.14 | 作業系統 |
2.0.0 | L2 CDP | 4.16 | 作業系統 |
3.0.0 | MBA CTRL(Resctrl) | 4.18 | 作業系統 |
參考:
英特爾(R) RDT 的唯一依賴項是對 C 和 pthreads 庫的訪問,以及:
在以下位置啟用英特爾(R) RDT 支援:
注意:v4.10 之前不需要核心配置選項。
簡而言之,目前不允許將英特爾(R) RDT 或 PCM 軟體與 Linux perf 和 cgroup 框架一起使用。
令人失望的是,不允許使用 Linux perf 進行 CMT 和 MBM 以及使用 Intel(R) RDT 進行 CAT 和 CDP。這是因為 Linux perf 在其操作期間會覆蓋現有的 CAT 配置。
為了使用 CAT,有多種選項可供選擇:
表 4. 軟體互通性矩陣
英特爾(R) RDT | 相變材料 | Linux效能 | Linux cgroup | Linux 重新控制 | |
---|---|---|---|---|---|
英特爾(R) RDT | 是(1) | 是(2) | 是(5) | 不 | 是(5) |
相變材料 | 是(2) | 是的 | 不 | 不 | 不 |
Linux效能 | 是(5) | 不 | 是的 | 是(3) | 是的 |
Linux cgroup | 不 | 不 | 是的 | 是(3) | 不 |
Linux 重新控制 (4) | 是(5) | 不 | 是的 | 不 | 是的 |
參考:
Intel(R) RDT 的 pqos 監控可以偵測系統中的其他 pqos 監控進程。英特爾(R) RDT 中的 rdtset 偵測使用 rdtset 啟動的其他進程,並且不會使用其 CAT/CDP 資源。
Intel(R) RDT 的 pqos 可以偵測到 PCM 監控核心,除非強制,否則不會嘗試劫持核心。但是,如果先啟動 pqos 監控,然後啟動 PCM,則後者將從 pqos 劫持監控基礎設施以供其使用。
Linux cgroup 核心補丁 https://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt
Linux 核心版本 4.10 及更高版本。英特爾 resctrl 的 wiki 位於:https://github.com/intel/intel-cmt-cat/wiki/resctrl
僅適用於Linux 核心版本4.10(及更高版本)、Intel(R) RDT 版本1.0.0(及更高版本)以及選定的作業系統介面請參閱「man pqos」或「pqos-os」中的“-I”選項。
PCM 位於:https://github.com/opcm/pcm
表 5. 英特爾(R) RDT 軟體啟用狀態。
核 | 任務 | CMT | 肉骨粉 | L3 CAT | L3 CDP | L2 電腦輔助翻譯 | 工商管理碩士 | |
---|---|---|---|---|---|---|---|---|
英特爾(R) RDT | 是的 | 是(7) | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 |
Linux效能 | 是(6) | 是的 | 是(1) | 是(2) | 否(3) | 否(3) | 否(3) | 不 |
Linux cgroup | 不 | 是的 | 不 | 不 | 是(4) | 不 | 不 | 不 |
Linux 重新控制 (5) | 是的 | 是的 | 是(8) | 是(8) | 是的 | 是的 | 是的 | 是(9) |
傳奇:
參考:
本軟體由英特爾「按原樣」提供。不透過使用而以禁止反言或其他方式授予任何智慧財產權的明示或暗示的許可。除英特爾銷售條款和條件中規定的情況外,英特爾不承擔與英特爾產品的銷售和/或使用相關的任何明示或暗示的保證,包括與針對特定目的的適用性相關的責任或保證,歌唱性,或侵犯任何專利、版權或其他智慧財產權。