Einrichten eines Geräts für Real-Time Leistung
In diesem Leitfaden erfahren Sie, wie Sie Ihr Gerät für die Echtzeitleistung einrichten.
Hinweis
Die einzige Möglichkeit, dieses Feature zu verwenden, ist eine Anwendung und ein Gerät, die für einen bestimmten Zweck entwickelt wurden. Die Zuordnung der Prozessorkernzuweisungen in den Anwendungsthreads muss mit den physischen Gerätekernen und deren Konfiguration für Echtzeit- und Standardworkloads übereinstimmen.
Deaktivieren von Leerlaufzuständen mit
powercfg.exe
Verweisen Sie auf die Sicherheitsrichtlinien für Systemdienste , um die folgenden Dienste zu deaktivieren:
- SysMain (Superfetch)
- DPS (Diagnoserichtliniendienst)
- Audiosrv (Windows Audio)
Deaktivieren Sie Windows Update mithilfe dieser Anleitung.
Hinweis
Dadurch wird Ihr Gerät für Sicherheitsrisiken geöffnet, da Sicherheitspatches nicht durchlaufen werden. Dies ist jedoch erforderlich, da der Windows Update-Agent die CPU-Kernisolation nicht berücksichtigt. Es wird empfohlen, einen Plan zu haben, um die Gerätesicherheit sicherzustellen und Updates zu installieren, wenn das Gerät für die Wartung heruntergefahren werden kann.
Tipp
Ein gutes Beispiel für die Verwaltung von Updates während Ausfallzeiten finden Sie in der UWF-Dokumentation: Dienst UWF-geschützte Geräte Wenn Sie UWF und Soft Real-time verwenden, sollte dieser Prozess die Betriebssystemaktualisierungsanforderungen für beide Features gleichzeitig übernehmen.
Legen Sie den WindowsIoT-CSP für die Echtzeitleistung fest.
Konfigurieren von RSS zum Migrieren von ISRs/DPCs zu CPU0
Hinweis
Dies ist hardwareabhängig und kann nur durchgeführt werden, wenn die NIC RSS unterstützt.
Optional:Deaktivieren von Thread-DPCs zum Debuggen
Optional: Bereitstellen eines benutzerdefinierten DPC-Anheftungstreibers für bestimmte Hardwareunterbrechungen befolgen Sie diese Anleitung.
Ausführen dieser Konfiguration über die Befehlszeile
Dadurch wird das Gerät konfiguriert, während es eingeschaltet ist. Um sicherzustellen, dass das Gerät die Soft-RT-Leistung beibehält, sollten Sie den Computer so konfigurieren, dass diese Befehle jedes Mal als Skript ausgeführt werden, wenn der Computer mithilfe dieser Anleitung aktiviert wird.
Führen Sie diese beiden Befehle in einer cmd-Eingabeaufforderung aus. Dadurch werden CPU-Leerlaufzustände deaktiviert, bei denen eine CPU ohne Ausführungsanweisungen in den Energiesparzustand wechselt. Dies ist in Echtzeitszenarien unerwünscht, da cpUs im Leerlauf mit der Ausführung neuer Anweisungen verzögert werden:
powercfg.exe /setacvalueindex SCHEME_CURRENT SUB_PROCESSOR IdleDisable 1 powercfg.exe /setactive SCHEME_CURRENT
Führen Sie die folgenden drei Befehle in einer cmd-Eingabeaufforderung aus, um DPS zu deaktivieren:
sc query dps sc stop dps sc config dps start=disabled
Führen Sie die folgenden drei Befehle in einer cmd-Eingabeaufforderung aus, um Audiosrv zu deaktivieren:
sc query Audiosrv sc stop Audiosrv sc config Audiosrv start=disabled
Führen Sie die folgenden drei Befehle in einer cmd-Eingabeaufforderung aus, um SysMain zu deaktivieren:
sc query SysMain sc stop SysMain sc config SysMain start=disabled
Führen Sie die folgenden drei Befehle in einer cmd-Eingabeaufforderung aus, um Windows Update zu deaktivieren:
sc query wuauserv sc stop wuauserv sc config wuauserv start=disabled
Führen Sie diesen Befehl aus, um Thread-DPCs zu deaktivieren.
reg add "HKLM\System\CurrentControlSet\Control\Session Manager\kernel" /v ThreadDpcEnable /t REG_DWORD /f /d 0
Sicherstellen, dass das Gerät für Real-Time eingerichtet bleibt
Bevor Sie ein Echtzeitgerät in einer Produktionsumgebung bereitstellen, ist ein anderes Setup erforderlich, um sicherzustellen, dass das Gerät Updates empfangen und die Echtzeitleistung erhalten kann:
- Richten Sie ein Skript ein, das Windows Update erneut aktivieren, Updates installieren und Windows Update wieder deaktivieren kann.
- Einrichten von Überprüfungen, um sicherzustellen, dass Gerätedienste deaktiviert bleiben
Was ist der WindowsIoT-CSP?
Dient WindowsIoT CSP
zum Konfigurieren von Windows IoT-Geräten. Derzeit ist in diesem CSP nur die Konfiguration eines Geräts für die Leistung von Soft Real-Time verfügbar. Dies ist nicht die einzige Arbeit, die ausgeführt werden muss, um weiche Echtzeit mit einem Gerät zu verwenden. Sie müssen auch die vorherigen sechs Schritte ausführen. Wenn Sie diesen CSP verwenden, um weiche Echtzeitkerne festzulegen, ohne auch diese zusätzliche Konfigurationsarbeit auszuführen, führt zu Systemfehlern und erfordert eine Neugestaltung, um wiederherzustellen.
Die Hierarchie dieses CSP lautet wie folgt:
WindowsIoT
SoftRealTimeProperties
SetRTCores
Für den SetRTCores-Parameter muss ein Wert größer als 0 und kleiner als die Gesamtanzahl der Kerne auf dem Gerät angegeben werden. Sie können diesen CSP mithilfe des Tools festlegen, das Ihr organization zum Konfigurieren ihrer Geräte verwendet, oder verwenden Sie die folgenden Schritte, um die MDM-Brücke zu verwenden.
Verwenden des MDM-Bridge-WMI-Anbieters zum Konfigurieren des WindowsIoT-CSP
Dieser CSP konfiguriert das System für die Echtzeitleistung. Sie müssen die Anzahl der CPU-Kerne angeben, die Echtzeitaufgaben zugeordnet werden sollen, wobei der Rest für die Ausführung von System- oder Standardbenutzeraufgaben zugewiesen wird. Im Knoten SetRTCores muss ein numerischer Wert angegeben werden. Dies ist die Anzahl der CPU-Kerne, die für Echtzeitworkloads vorgesehen sind. Gültige numerische Werte müssen mindestens 1 und kleiner als die Anzahl der physischen Kerne in der CPU sein.
Umgebungen, die die Windows-Verwaltungsinstrumentation (WMI) verwenden, können dazu den MDM-Bridge-WMI-Anbieter verwenden. Hier sehen Sie ein Beispiel zum Festlegen der RealTime-Konfiguration mit drei Echtzeitkernen:
Laden Sie das Tool psexec herunter.
Führen Sie eine Administratoreingabeaufforderung aus.
Starten Sie PowerShell an der Eingabeaufforderung unter Systemkonto.
psexec.exe -s -i powershell.exe
Führen Sie das folgende Skript aus:
$nameSpaceName="root\cimv2\mdm\dmmap" $className="MDM_WindowsIoT_SoftRealTimeProperties01" $obj = Get-CimInstance -Namespace $namespaceName -ClassName $className Add-Type -AssemblyName System.Web Set-CimInstance -CimInstance $obj $obj.SetRTCores = 3 Set-CimInstance -CimInstance $obj
Starten Sie den Computer neu, um die Änderung zu aktivieren.
Tipp
Sie können dasselbe Skript für jede Anzahl von Echtzeitkernen verwenden, die Sie benötigen. Ersetzen Sie einfach die 3 in der vorletzten Zeile durch die entsprechende Zahl. Dadurch werden Kerne reserviert, die mit dem höchsten Kern beginnen und nach unten gehen. Wenn Sie also 3 Kerne auf einer 4-Kern-CPU reservieren, werden die Kerne 3, 2 und 1 reserviert und Kern 0 für System- und Nicht-Echtzeitaufgaben beibehalten. Bitte beachten Sie, dass es keine Garantie dafür gibt, dass die Echtzeitkerne am höchsten bleiben, da die Echtzeitkernindizes korrigiert bleiben, wenn die CPU-Kernanzahl danach erhöht wird.