该软件包为英特尔(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 文件。
“更改日志”文件:
版本之间变化的简要描述。
“安装”文件:
安装说明。
“许可证”文件:
软件包的许可证。
“单元测试”目录:
单元测试
支持的产品可在英特尔® 资源调配技术(英特尔® 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) |
传奇:
参考:
本软件由英特尔“按原样”提供。不通过使用而以禁止反言或其他方式授予任何知识产权的明示或暗示的许可。除英特尔销售条款和条件中规定的情况外,英特尔不承担任何与英特尔产品的销售和/或使用相关的明示或暗示的保证,包括与特定产品的适用性相关的责任或保证。任何专利、版权或其他知识产权的目的、适销性或侵权。