Einrichten eines Geräts für die Echtzeitleistung
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 mit einer anwendung und einem gerät, die für einen bestimmten Zweck erstellt wurde. Die Zuordnung von 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. Das heißt, es ist notwendig, da der Windows Update-Agent die CPU-Kernisolation nicht berücksichtigt. Es wird empfohlen, einen Plan zu erstellen, um die Gerätesicherheit sicherzustellen und Updates zu installieren, wenn das Gerät für die Wartung heruntergenommen werden kann.
Tipp
Ein gutes Beispiel für die Verwaltung von Updates während der Ausfallzeit finden Sie in der UWF-Dokumentation: Service UWF-geschützte Geräte Wenn Sie UWF und Soft Real-time verwenden, sollte dieser Prozess die Notwendigkeit des Betriebssystemupdates 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 ausgeführt werden, wenn die NIC RSS unterstützt.
Optional: Deaktivieren von Thread-DPCs für das Debuggen
Optional: Bereitstellen eines benutzerdefinierten DPC-Pinningtreibers für bestimmte Hardwareunterbrechungen, indem Sie diesen Leitfaden ausführen.
Ausführen dieser Konfiguration über die Befehlszeile
Dadurch wird das Gerät konfiguriert, während es eingeschaltet ist. Um sicherzustellen, dass das Gerät soft-RT-Leistung beibehält, sollten Sie den Computer so konfigurieren, dass diese Befehle jedes Mal als Skript ausgeführt werden, wenn der Computer diese Anleitung verwendet.
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 einen Energiesparzustand wechselt. Dies ist in Echtzeitszenarien nicht erwünscht, da Leerlauf-CPUs eine Verzögerung beim Starten neuer Anweisungen haben:
powercfg.exe /setacvalueindex SCHEME_CURRENT SUB_PROCESSOR IdleDisable 1 powercfg.exe /setactive SCHEME_CURRENT
Führen Sie diese 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 diese 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 diese 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 Echtzeit 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 aufrecht erhalten kann:
- Einrichten eines Skripts, mit dem Windows Update erneut aktualisiert, Updates installiert und Windows Update wieder deaktiviert werden kann
- Einrichten von Überprüfungen, um sicherzustellen, dass Gerätedienste deaktiviert bleiben
Was ist der WindowsIoT-CSP?
Dies WindowsIoT CSP
wird verwendet, um Windows IoT-Geräte zu konfigurieren. Derzeit ist die einzige in diesem CSP verfügbare Funktionalität das Konfigurieren eines Geräts für die Soft Real-Time-Leistung. Dies ist nicht die einzige Arbeit, die durchgefü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 diese zusätzliche Konfiguration auch auszuführen, führt dies zu Systemfehlern und erfordert eine Neubewiederherstellung.
Die Hierarchie dieses CSP lautet wie folgt:
WindowsIoT
SoftRealTimeProperties
SetRTCores
Für den Parameter SetRTCores 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 Ihre Organisation zum Konfigurieren ihrer Geräte verwendet, oder führen Sie die folgenden Schritte aus, um die MDM-Brücke zu verwenden.
Verwenden des WMI-Anbieters der MDM-Brücke zum Konfigurieren des WindowsIoT-CSP
Dieser CSP konfiguriert das System für die Echtzeitleistung. Sie müssen die Anzahl der CPU-Kerne bereitstellen, die Echtzeitaufgaben zugeordnet werden sollen, wobei der Rest für die Ausführung von System- oder Standardbenutzeraufgaben zugewiesen wird. Ein numerischer Wert muss im SetRTCores-Knoten 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 WMI-Anbieter der MDM-Brücke verwenden. Hier ist ein Beispiel zum Festlegen der RealTime-Konfiguration mit drei Echtzeitkernen:
Laden Sie das psexec-Tool herunter.
Führen Sie eine Administrative Eingabeaufforderung aus.
Starten Sie in der Eingabeaufforderung PowerShell 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 die anzahl der benötigten Echtzeitkerne verwenden, indem Sie die 3 in der zweiten bis letzten Zeile durch die entsprechende Nummer ersetzen. Dadurch werden Kerne reserviert, die mit dem höchsten Kern beginnen und nach unten gehen. 3 Kerne auf einer 4-Kern-CPU reservieren also Kerne 3, 2 und 1 und lassen Kern 0 für System- und Nicht-Echtzeit-Aufgaben. Bitte beachten Sie, dass keine Garantie dafür besteht, dass die Echtzeitkerne am höchsten bleiben, da die Echtzeitkernindizes fest bleiben, wenn die CPU-Kernanzahl danach erhöht wird.