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.

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

  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 durchgeführt werden, wenn die NIC RSS unterstützt.

  6. Optional:Deaktivieren von Thread-DPCs zum Debuggen

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

  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 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
    
  2. 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
    
  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 die folgenden 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 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
    
  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 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:

  1. Laden Sie das Tool psexec herunter.

  2. Führen Sie eine Administratoreingabeaufforderung aus.

  3. Starten Sie PowerShell an der Eingabeaufforderung 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 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.

Weiter: Entwickeln einer Soft Real-Time-Anwendung