Come configurare un dispositivo per le prestazioni di Real-Time

Questa guida illustra come configurare il dispositivo per prestazioni in tempo reale.

Nota

L'unico modo per usare questa funzionalità è con un'applicazione e un dispositivo personalizzati per uno scopo specifico. Il mapping delle assegnazioni di core del processore nei thread dell'applicazione deve corrispondere ai core del dispositivo fisico e alla relativa configurazione per carichi di lavoro in tempo reale rispetto ai carichi di lavoro standard.

  1. Disabilitare gli stati di inattività con powercfg.exe

  2. Fare riferimento alle linee guida sulla sicurezza per i servizi di sistema per disabilitare i servizi seguenti:

    1. SysMain (Superfetch)
    2. DPS (Servizio criteri di diagnostica)
    3. Audiosrv (Windows Audio)
  3. Disabilitare Windows Update usando queste linee guida.

    Nota

    In questo modo il dispositivo verrà aperto alle vulnerabilità perché le patch di sicurezza non verranno applicate. Detto questo, è necessario perché l'agente di Windows Update non rispetta l'isolamento core della CPU. È consigliabile avere un piano per garantire la sicurezza dei dispositivi e installare gli aggiornamenti durante i periodi in cui il dispositivo può essere disattivato per la manutenzione

    Suggerimento

    Un buon esempio di gestione degli aggiornamenti durante il tempo di inattività è disponibile nella documentazione di UWF: I dispositivi protetti da UWF del servizio Se si usa UWF e soft real-time, questo processo deve occuparsi della necessità di aggiornamento del sistema operativo per entrambe le funzionalità contemporaneamente.

  4. Impostare Il provider di servizi di configurazione WindowsIoT per le prestazioni in tempo reale.

  5. Configurare RSS per eseguire la migrazione di ISR/DPC a CPU0

    Nota

    Questa operazione dipende dall'hardware e può essere eseguita solo se la scheda di interfaccia di rete supporta RSS

  6. Facoltativo:Disabilitare i controller di dominio thread per il debug

  7. Opzionale: Distribuzione di un driver di aggiunta DPC personalizzato per determinati interrupt hardware seguendo queste indicazioni.

Esecuzione di questa configurazione dalla riga di comando

In questo modo il dispositivo viene configurato durante l'accensione. Per garantire che il dispositivo mantenga le prestazioni soft-RT, è necessario configurare il computer per eseguire questi comandi come script ogni volta che il computer esegue questa guida.

  1. Eseguire questi due comandi in un prompt dei comandi. In questo modo viene disabilitato lo stato di inattività della CPU, in cui una CPU senza istruzioni per l'esecuzione entrerà in uno stato di risparmio energia. Questo è indesiderato negli scenari in tempo reale perché le CPU inattive hanno un ritardo nell'avvio dell'esecuzione di nuove istruzioni:

    powercfg.exe /setacvalueindex SCHEME_CURRENT SUB_PROCESSOR IdleDisable 1
    powercfg.exe /setactive SCHEME_CURRENT
    
  2. Eseguire questi tre comandi in un prompt dei comandi per disabilitare il servizio Device Provisioning:

    sc query dps
    sc stop dps
    sc config dps start=disabled
    
  3. Eseguire questi tre comandi in un prompt dei comandi per disabilitare Audiosrv:

    sc query Audiosrv
    sc stop Audiosrv
    sc config Audiosrv start=disabled
    
  4. Eseguire questi tre comandi in un prompt dei comandi per disabilitare SysMain:

    sc query SysMain
    sc stop SysMain
    sc config SysMain start=disabled
    
  5. Eseguire questi tre comandi in un prompt dei comandi per disabilitare Windows Update:

    sc query wuauserv
    sc stop wuauserv
    sc config wuauserv start=disabled
    
  6. Eseguire questo comando per disabilitare i controller di dominio threadati

    reg add "HKLM\System\CurrentControlSet\Control\Session Manager\kernel" /v ThreadDpcEnable /t REG_DWORD /f /d 0
    

Garantire che il dispositivo rimanga configurato per Real-Time

Prima di distribuire un dispositivo in tempo reale in un ambiente di produzione, è necessaria un'altra configurazione per garantire che il dispositivo possa ricevere aggiornamenti e mantenere le prestazioni in tempo reale:

  • Configurare uno script in grado di riabilitare Windows Update, installare gli aggiornamenti e disattivare Windows Update ancora una volta
  • Configurare i controlli per assicurarsi che i servizi sul dispositivo rimangano disabilitati

Che cos'è il provider di servizi di configurazione WindowsIoT?

viene WindowsIoT CSP usato per configurare i dispositivi Windows IoT. Attualmente l'unica funzionalità disponibile in questo provider di servizi di configurazione consiste nel configurare un dispositivo per le prestazioni di soft Real-Time. Questo non è l'unico lavoro che deve essere eseguito per usare in tempo reale soft con un dispositivo. È inoltre necessario eseguire i sei passaggi precedenti. L'uso di questo provider di servizi di configurazione per impostare core in tempo reale soft senza eseguire questa operazione di configurazione aggiuntiva comporta un malfunzionamento del sistema e richiede la ricreazione del ripristino.

La gerarchia di questo provider di servizi di configurazione è la seguente:

WindowsIoT
   SoftRealTimeProperties
      SetRTCores

Un valore maggiore di 0 e minore del numero totale di core nel dispositivo deve essere fornito al parametro SetRTCores. È possibile impostare questo CSP usando qualsiasi strumento usato dall'organizzazione per configurare i propri dispositivi o usare la procedura seguente per usare mdm Bridge.

Usare il provider WMI bridge MDM per configurare il provider CSP WindowsIoT

Questo CSP configura il sistema per le prestazioni in tempo reale. È necessario fornire il numero di core CPU da allocare alle attività in tempo reale, con il resto allocato per l'esecuzione di attività utente standard o di sistema. È necessario specificare un valore numerico nel nodo SetRTCores. Si tratta del numero di core CPU dedicati ai carichi di lavoro in tempo reale. I valori numerici validi devono essere almeno 1 e inferiori al numero di core fisici nella CPU.

Gli ambienti che usano Strumentazione gestione Windows (WMI) possono usare il provider WMI bridge MDM per eseguire questa operazione. Ecco un esempio per impostare la configurazione RealTime con tre core in tempo reale:

  1. Scaricare lo strumento psexec.

  2. Eseguire un prompt dei comandi amministrativo.

  3. Nel prompt dei comandi avviare PowerShell con l'account di sistema psexec.exe -s -i powershell.exe

  4. Eseguire lo script seguente:

    $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. Riavviare il computer per attivare la modifica.

Suggerimento

È possibile usare lo stesso script per qualsiasi numero di core in tempo reale necessari, sostituendo solo il 3 nella riga da secondo all'ultimo con il numero appropriato. In questo modo i core verranno riservati a partire dal core più alto e scendendo verso il basso. Quindi riservare 3 core su una CPU a 4 core riserva core 3, 2 e 1 e lasciare core 0 per le attività di sistema e non in tempo reale. Si noti che non c'è alcuna garanzia che i core in tempo reale rimarranno più alti, poiché gli indici core in tempo reale rimarranno fissi se l'aumento del numero di core cpu verrà successivamente aumentato.

Successiva: Sviluppare un'applicazione soft Real-Time