Dieses Softwarepaket bietet grundlegende Unterstützung für Intel(R) Resource Director Technology (Intel(R) RDT) und Intel(R) I/O Resource Director Technology (Intel(R) I/O RDT), einschließlich: Cache Monitoring Technology (CMT) , Speicherbandbreitenüberwachung (MBM), Cache-Zuweisungstechnologie (CAT), Code- und Datenpriorisierung (CDP) und Speicherbandbreitenzuweisung (MBA).
Grundsätzlich programmiert die Software die Technologien über Model Specific Registers (MSR) auf Hardware-Thread-Basis. Der MSR-Zugriff erfolgt über einen Standard-Betriebssystemtreiber: msr unter Linux und cpuctl unter FreeBSD. In den gängigsten Architekturimplementierungen wird das Vorhandensein der Technologien über die CPUID-Anweisung erkannt.
In einer begrenzten Anzahl von Sonderfällen, in denen CAT auf einer bestimmten SKU nicht architektonisch unterstützt wird (sondern stattdessen eine nicht-architektonische (modellspezifische) Implementierung vorhanden ist), kann es über die Markenzeichenfolge erkannt werden. Diese Markenzeichenfolge wird aus der CPUID gelesen und mit einer Tabelle bekanntermaßen unterstützter SKUs verglichen. Bei Bedarf besteht eine abschließende Prüfung darin, die spezifischen MSRs zu untersuchen, um Hardwarefunktionen zu ermitteln. Es wird jedoch empfohlen, wann immer möglich die CPUID-Aufzählung zu verwenden.
Ab der Softwareversion v1.0.0 bietet die Bibliothek die Möglichkeit, Intel(R) RDT über verfügbare Betriebssystemschnittstellen (perf und resctrl unter Linux) zu verwenden. Die Bibliothek erkennt das Vorhandensein dieser Schnittstellen und ermöglicht die Auswahl der bevorzugten Schnittstelle über eine Konfigurationsoption. Dadurch können auch vorhandene Tools wie „pqos“ oder „rdtset“ verwendet werden, um Intel(R) RDT betriebssystemkompatibel zu verwalten. Ab Version 4.3.0 wurde die Betriebssystemschnittstelle zur Standardoption. Es wurden „pqos“-Tool-Wrapper hinzugefügt, die bei der Schnittstellenauswahl helfen. „pqos-os“ und „pqos-msr“ für Betriebssystem- bzw. MSR-Schnittstellenoperationen.
Die Option zur PID-API-Kompilierungszeit wurde entfernt und die APIs sind immer verfügbar. Beachten Sie, dass der ordnungsgemäße Betrieb dieser APIs von der Verfügbarkeit und Auswahl der Betriebssystemschnittstelle abhängt.
Dieses Softwarepaket wird auf https://github.com/intel/intel-cmt-cat gepflegt, aktualisiert und entwickelt
https://github.com/intel/intel-cmt-cat/wiki bietet FAQ, Anwendungsbeispiele und nützliche Links.
Anweisungen zur Paketinstallation finden Sie in der INSTALL-Datei.
Verzeichnis „lib“:
Enthält Softwarebibliotheksdateien, die APIs für die Technologieerkennung, -überwachung und -zuordnung bereitstellen. Weitere Informationen finden Sie in der README-Datei der Bibliothek (lib/README).
Verzeichnis „lib/perl“:
Enthält den Perl-Wrapper der PQoS-Bibliothek. Weitere Informationen finden Sie in der README-Datei der Schnittstelle (lib/perl/README).
Verzeichnis „lib/python“:
Enthält den Python 3.x-Wrapper der PQoS-Bibliothek. Weitere Informationen finden Sie in der README-Datei der Schnittstelle (lib/python/README.md).
Verzeichnis „pqos“:
Enthält Quelldateien für ein Dienstprogramm, das Befehlszeilenzugriff auf Intel(R) RDT ermöglicht. Das Dienstprogramm stellt eine Verbindung zur Bibliothek her und programmiert die Technologien über seine APIs. Weitere Informationen finden Sie in der README-Datei des Dienstprogramms „pqos/README“. Die Handbuchseite des Dienstprogramms „pqos“ bietet auch Informationen zur Tool-Nutzung: $ man pqos
Verzeichnis „rdtset“:
Enthält Quelldateien für ein Dienstprogramm, das „Taskset“-ähnliche Funktionen für die RDT-Konfiguration bereitstellt. Das Dienstprogramm stellt eine Verbindung zur Bibliothek her und programmiert die Technologien über seine APIs. Weitere Informationen finden Sie in der README-Datei des Dienstprogramms „rdtset/README“. Die Handbuchseite des Dienstprogramms „rdtset“ bietet auch Informationen zur Tool-Nutzung: $ man rdtset
Verzeichnis „appqos“:
Enthält Quelldateien für eine Anwendung, die das Gruppieren von Apps in prioritätsbasierten Pools ermöglicht. Jedem Pool wird eine Intel(R) RDT- und Intel(R) SST-Konfiguration zugewiesen, die beim Start oder zur Laufzeit über eine REST-API festgelegt werden kann. Weitere Informationen finden Sie in der README-Datei der Anwendung „appqos/README“.
Verzeichnis „appqos_client“:
Enthält Quelldateien für eine App-QoS-Client-Webanwendung. Die App bietet eine einfache Benutzeroberfläche zur Fernkonfiguration von Intel(R) RDT und Intel(R) SST auf Systemen, auf denen App QoS ausgeführt wird. Weitere Informationen finden Sie in der README-Datei der Anwendung „appqos_client/README“.
Verzeichnis „Beispiele“:
Enthält C- und Perl-Beispiele für die Verwendung von Intel(R) RDT über die Bibliotheks-APIs. Weitere Einzelheiten finden Sie in der README-Datei „examples/README“.
Verzeichnis „snmp“:
Enthält den in Perl geschriebenen Net-SNMP AgentX-Subagenten, um die Verwendung der Perl-Wrapper-API der PQoS-Bibliothek zu demonstrieren. Weitere Informationen finden Sie in der README-Datei „snmp/README“.
Verzeichnis „tools“:
Enthält ein membw-Tool zur Belastung der Speicherbandbreite mit verschiedenen Vorgängen.
Verzeichnis „srpm“:
Enthält *.src *.rpm- und *.spec-Dateien für das Softwarepaket.
Datei „ChangeLog“:
Kurze Beschreibung der Änderungen zwischen den Versionen.
Datei „INSTALL“:
Installationsanleitung.
Datei „LICENSE“:
Lizenz des Pakets.
Verzeichnis „unit-test“:
Unit-Tests
Unterstützte Produkte finden Sie im Anhang A der Architekturspezifikation der Intel® Resource Director Technology (Intel® RDT): https://www.intel.com/content/www/us/en/content-details/789566/intel-resource -director-technology-intel-rdt-architecture-specification.html
Anhang B enthält eine Liste von Prozessoren mit modellspezifischen Intel® RDT-Funktionen.
Hinweis: Für die Erkennung modellspezifischer Funktionen muss die Umgebungsvariable RDT_PROBE_MSR
festgelegt werden, wenn die Bibliothek und Dienstprogramme verwendet werden. Diese Funktionen sind nur bei Verwendung der MSR-Schnittstelle verfügbar. Weitere Informationen finden Sie im Abschnitt „Schnittstellen“ weiter unten. Anwendungsbeispiele finden Sie im Wiki.
Weitere Informationen zu Intel(R) RDT finden Sie in den Softwareentwicklungshandbüchern für die Intel(R)-Architektur, verfügbar unter: 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 Spezifische Informationen finden Sie im Band 3a, Kapitel 17.18 und 17.19.
Linux ist derzeit das primär unterstützte Betriebssystem. Es gibt eine FreeBSD-Portierung der Software, aber aufgrund des begrenzten Validierungsumfangs ist sie derzeit eher experimentell. Obwohl die meisten modernen Linux-Kernel Intel(R) RDT unterstützen, ist das Intel(R) RDT-Softwarepaket älter als diese Erweiterungen und kann mit und ohne Kernel-Unterstützung betrieben werden. Die Intel(R) RDT-Software kann diese Kernel-Erweiterungen erkennen und nutzen, wenn sie verfügbar sind, um Funktionalität hinzuzufügen, ist aber auch mit älteren Kerneln kompatibel.
Die Linux-Kernel-Unterstützung für Intel(R) RDT wurde ursprünglich mit Linux-Perf-Systemaufruferweiterungen für CMT und MBM eingeführt. In jüngerer Zeit hat die Resctrl-Schnittstelle Unterstützung für CAT, CDP und MBA hinzugefügt. Bei modernen Linux-Kerneln wird empfohlen, die Kernel/OS-Schnittstelle zu verwenden, sofern verfügbar. Details zu diesen Schnittstellen finden Sie in resctrl_ui.txt. Dieses Softwarepaket, Intel(R) RDT, funktioniert weiterhin nahtlos in allen Linux-Kernelversionen.
Die Intel(R) RDT-Softwarebibliothek und -Dienstprogramme bieten zwei Schnittstellen zum Programmieren von Intel(R) RDT-Technologien: die MSR- und OS-Schnittstellen.
Die MSR-Schnittstelle dient zur Konfiguration der Plattform durch direkte Programmierung der Hardware (MSRs). Dies ist die Legacy-Schnittstelle und erfordert keine Kernel-Unterstützung für Intel(R) RDT, beschränkt sich jedoch auf die Überwachung und Verwaltung von Ressourcen pro Kern.
Die Betriebssystemschnittstelle wurde dem Paket später hinzugefügt und wenn sie ausgewählt wird, nutzt die Bibliothek Linux-Kernel-Erweiterungen, um diese Technologien zu programmieren. Dies ermöglicht die Überwachung und Verwaltung von Ressourcen pro Kern/Prozess und sollte verwendet werden, sofern verfügbar.
Weitere Informationen dazu, wann die Unterstützung für die Intel(R) RDT-Funktion (MSR und OS) zum Paket hinzugefügt wurde, finden Sie in den folgenden Tabellen.
Intel(R) RDT-Version | RDT-Funktion aktiviert | Kernelversion erforderlich |
---|---|---|
0.1.3 | L3 CAT, CMT, MBM | Beliebig |
0.1.4 | L3 CDP | Beliebig |
0,1,5 | L2-KATZE | Beliebig |
1.2.0 | MBA | Beliebig |
2.0.0 | L2-CDP | Beliebig |
5.0.0 | E/A-RDT | Beliebig |
Intel(R) RDT-Version | RDT-Funktion aktiviert | Kernelversion erforderlich | Empfohlene Schnittstelle |
---|---|---|---|
0.1.4 | CMT (Perf) | 4.1 | MSR (1) |
1.0.0 | MBM (Perf) | 4.7 | MSR (1) |
1.1.0 | L3 CAT, L3 CDP, L2 CAT (Resctrl) | 4.10 | OS nur für Zuteilung (mit Ausnahme von MBA) MSR für Zuteilung + Überwachung (2) |
1.2.0 | MBA (Resctrl) | 4.12 | OS nur für Zuteilung MSR für Zuteilung + Überwachung (2) |
2.0.0 | CMT, MBM (Resctrl) | 4.14 | Betriebssystem |
2.0.0 | L2-CDP | 4.16 | Betriebssystem |
3.0.0 | MBA CTRL (Resctrl) | 4.18 | Betriebssystem |
Referenzen:
Die einzigen Abhängigkeiten von Intel(R) RDT sind der Zugriff auf C- und pthreads-Bibliotheken und:
Aktivieren Sie die Intel(R) RDT-Unterstützung in:
Hinweis: Vor Version 4.10 sind keine Kernel-Konfigurationsoptionen erforderlich.
Kurz gesagt, die Verwendung von Intel(R) RDT- oder PCM-Software zusammen mit Linux-Perf- und Cgroup-Frameworks ist derzeit nicht erlaubt.
So enttäuschend es auch ist, die Verwendung von Linux Perf für CMT und MBM und Intel(R) RDT für CAT und CDP ist nicht zulässig. Dies liegt daran, dass Linux Perf während seines Betriebs die vorhandene CAT-Konfiguration überschreibt.
Um CAT zu nutzen, stehen Ihnen mehrere Möglichkeiten zur Auswahl:
Tabelle 4. Software-Interoperabilitätsmatrix
Intel(R) RDT | PCM | Linux-Perf | Linux-Gruppe | Linux resctrl | |
---|---|---|---|---|---|
Intel(R) RDT | Ja(1) | Ja(2) | Ja(5) | NEIN | Ja(5) |
PCM | Ja(2) | Ja | NEIN | NEIN | NEIN |
Linux-Perf | Ja(5) | NEIN | Ja | Ja(3) | Ja |
Linux-Gruppe | NEIN | NEIN | Ja | Ja(3) | NEIN |
Linux resctrl (4) | Ja(5) | NEIN | Ja | NEIN | Ja |
Referenzen:
Die PQOS-Überwachung von Intel(R) RDT kann andere PQOS-Überwachungsprozesse im System erkennen. rdtset von Intel(R) RDT erkennt andere mit rdtset gestartete Prozesse und nutzt deren CAT/CDP-Ressourcen nicht.
pqos von Intel(R) RDT kann erkennen, dass PCM Kerne überwacht und wird nicht versuchen, die Kerne zu kapern, es sei denn, dies wird dazu erzwungen. Wenn jedoch zuerst die pqos-Überwachung und dann PCM gestartet wird, übernimmt letzteres die Überwachungsinfrastruktur von pqos für seine Verwendung.
Linux-Cgroup-Kernel-Patch https://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt
Linux-Kernel-Version 4.10 und neuer. Ein Wiki für Intel Resctrl ist verfügbar unter: https://github.com/intel/intel-cmt-cat/wiki/resctrl
Nur mit Linux-Kernel-Version 4.10 (und neuer), Intel(R) RDT-Version 1.0.0 (und neuer) mit ausgewählter Betriebssystemschnittstelle. Siehe Option „-I“ in „man pqos“ oder „pqos-os“.
PCM ist verfügbar unter: https://github.com/opcm/pcm
Tabelle 5. Aktivierungsstatus der Intel(R) RDT-Software.
Kern | Aufgabe | CMT | MBM | L3 KAT | L3 CDP | L2-KATZE | MBA | |
---|---|---|---|---|---|---|---|---|
Intel(R) RDT | Ja | Ja(7) | Ja | Ja | Ja | Ja | Ja | Ja |
Linux-Perf | Ja(6) | Ja | Ja(1) | Ja(2) | Nein(3) | Nein(3) | Nein(3) | NEIN |
Linux-Gruppe | NEIN | Ja | NEIN | NEIN | Ja(4) | NEIN | NEIN | NEIN |
Linux resctrl (5) | Ja | Ja | Ja(8) | Ja(8) | Ja | Ja | Ja | Ja(9) |
Legende:
Referenzen:
DIESE SOFTWARE WIRD VON INTEL „WIE BESEHEN“ ZUR VERFÜGUNG GESTELLT. DURCH DIE NUTZUNG WIRD KEINE LIZENZ, WEDER AUSDRÜCKLICH NOCH STILLSCHWEIGEND, DURCH ESTOPPEL ODER ANDERWEITIG GEWÄHRT. SOFERN NICHT IN DEN VERKAUFSBEDINGUNGEN VON INTEL BESTIMMT, ÜBERNIMMT INTEL KEINERLEI HAFTUNG UND SCHLIESST JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG IM ZUSAMMENHANG MIT DEM VERKAUF UND/ODER DER VERWENDUNG VON INTEL-PRODUKTEN AUS, EINSCHLIESSLICH HAFTUNG ODER GEWÄHRLEISTUNG IN BEZUG AUF EIGNUNG FÜR EINEN BESTIMMTEN ZWECK, MARKTGÄNGIGKEIT ODER VERLETZUNG JEGLICHER PATENT-, URHEBERRECHTE ODER ANDERER RECHTE AN GEISTIGEM EIGENTUM.