Freigeben über


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.

  1. Deaktivieren von Leerlaufzuständen mit powercfg.exe

  2. Verweisen Sie auf die Sicherheitsrichtlinien für Systemdienste , um die folgenden Dienste zu deaktivieren:

    1. SysMain (Superfetch)
    2. DPS (Diagnoserichtliniendienst)
    3. Audiosrv (Windows Audio)
  3. 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.

  4. Legen Sie den WindowsIoT-CSP für die Echtzeitleistung fest.

  5. 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.

  6. Optional: Deaktivieren von Thread-DPCs für das Debuggen

  7. 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.

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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:

  1. Laden Sie das psexec-Tool herunter.

  2. Führen Sie eine Administrative Eingabeaufforderung aus.

  3. Starten Sie in der Eingabeaufforderung PowerShell unter Systemkonto. psexec.exe -s -i powershell.exe

  4. 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
    
  5. 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.

Nächstes: Entwickeln einer weichen Echtzeitanwendung