Condividi tramite


Come configurare un dispositivo per le prestazioni in tempo reale

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 i carichi di lavoro standard e in tempo reale.

  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 (Audio Windows)
  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 del core CPU. È consigliabile disporre di 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: Servizi dispositivi protetti da UWF 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 prestazioni in tempo reale.

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

    Nota

    Questo è dipendente dall'hardware e può essere eseguito solo se la scheda di interfaccia di rete supporta RSS

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

  7. Facoltativo: distribuzione di un driver personalizzato di associazione DPC 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. Ciò disabilita gli stati di inattività della CPU, in cui una CPU senza istruzioni per l'esecuzione entrerà in uno stato di risparmio energia. Ciò è indesiderato in 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 il tempo reale

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 Nuovamente Windows Update
  • 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 CSP consiste nel configurare un dispositivo per le prestazioni soft-time. Questo non è l'unico lavoro che deve essere eseguito per usare il soft real-time 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 il 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 del 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. Questo è il numero di core CPU dedicati ai carichi di lavoro in tempo reale. I valori numerici validi devono essere almeno 1 e minori del 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 che è necessario avere, sostituendo semplicemente il 3 nella riga da secondo a ultimo con il numero appropriato. In questo modo i core verranno riservati a partire dal core più alto e scendendo verso il basso. Pertanto, riservando 3 core su una CPU a 4 core si riservano core 3, 2 e 1 e si lascia 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 aumenta il numero di core CPU in un secondo momento.

Successiva: Sviluppare un'applicazione in tempo reale soft