Configuración de un dispositivo para Real-Time rendimiento

En esta guía se explica cómo configurar el dispositivo para el rendimiento en tiempo real.

Nota:

La única manera de usar esta característica es con una aplicación y un dispositivo personalizados para un propósito específico. La asignación de asignaciones de núcleos de procesador en los subprocesos de la aplicación debe coincidir con los núcleos del dispositivo físico y su configuración para cargas de trabajo estándar en tiempo real.

  1. Deshabilitación de estados inactivos con powercfg.exe

  2. Consulte las directrices de seguridad de los servicios del sistema para deshabilitar los siguientes servicios:

    1. SysMain (Superfetch)
    2. DPS (servicio de directivas de diagnóstico)
    3. Audiosrv (Audio de Windows)
  3. Deshabilite Windows Update mediante esta guía.

    Nota:

    Esto abrirá el dispositivo a vulnerabilidades, ya que las revisiones de seguridad no pasarán. Dicho esto, es necesario, ya que el agente de Windows Update no respeta el aislamiento de núcleos de CPU. Se recomienda tener un plan para garantizar la seguridad del dispositivo e instalar las actualizaciones durante los momentos en que el dispositivo se puede quitar para el mantenimiento.

    Sugerencia

    Puede encontrar un buen ejemplo de administración de actualizaciones durante el tiempo de inactividad en la documentación de UWF: Dispositivos protegidos por UWF si usa UWF y Soft Real-time, este proceso debe ocuparse de la necesidad de actualización del sistema operativo para ambas características al mismo tiempo.

  4. Establezca el CSP de WindowsIoT para el rendimiento en tiempo real.

  5. Configuración de RSS para migrar ISR/DPC a CPU0

    Nota:

    Esto depende del hardware y solo se puede hacer si la NIC admite RSS.

  6. Opcional:Deshabilitar los DPC subprocesos para la depuración

  7. Opcional: Para implementar un controlador de anclaje de DPC personalizado para determinadas interrupciones de hardware, siga estas instrucciones.

Realización de esta configuración desde la línea de comandos

Esto configura el dispositivo mientras está encendido. Para asegurarse de que el dispositivo mantiene el rendimiento de soft-RT, debe configurar la máquina para ejecutar estos comandos como un script cada vez que la máquina activa esta guía.

  1. Ejecute estos dos comandos en un símbolo del sistema cmd. Esto deshabilita los estados inactivos de la CPU, donde una CPU sin instrucciones para ejecutar entrará en un estado de ahorro de energía. Esto no es deseable en escenarios en tiempo real, ya que las CPU inactivas tienen un retraso al empezar a ejecutar nuevas instrucciones:

    powercfg.exe /setacvalueindex SCHEME_CURRENT SUB_PROCESSOR IdleDisable 1
    powercfg.exe /setactive SCHEME_CURRENT
    
  2. Ejecute estos tres comandos en un símbolo del sistema cmd para deshabilitar DPS:

    sc query dps
    sc stop dps
    sc config dps start=disabled
    
  3. Ejecute estos tres comandos en un símbolo del sistema cmd para deshabilitar Audiosrv:

    sc query Audiosrv
    sc stop Audiosrv
    sc config Audiosrv start=disabled
    
  4. Ejecute estos tres comandos en un símbolo del sistema cmd para deshabilitar SysMain:

    sc query SysMain
    sc stop SysMain
    sc config SysMain start=disabled
    
  5. Ejecute estos tres comandos en un símbolo del sistema cmd para deshabilitar Windows Update:

    sc query wuauserv
    sc stop wuauserv
    sc config wuauserv start=disabled
    
  6. Ejecute este comando para deshabilitar los DPC con subprocesos.

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

Asegurarse de que el dispositivo permanezca configurado para Real-Time

Antes de implementar un dispositivo en tiempo real en un entorno de producción, hay otra configuración necesaria para asegurarse de que el dispositivo puede recibir actualizaciones y mantener el rendimiento en tiempo real:

  • Configurar un script que pueda volver a habilitar Windows Update, instalar actualizaciones y desactivar Windows Update una vez más
  • Configurar comprobaciones para asegurarse de que los servicios en el dispositivo permanecen deshabilitados

¿Qué es el CSP de WindowsIoT?

WindowsIoT CSP se usa para configurar dispositivos Windows IoT. Actualmente, la única funcionalidad disponible en este CSP es configurar un dispositivo para el rendimiento de Soft Real-Time. Este no es el único trabajo que debe realizarse para usar el tiempo real flexible con un dispositivo. También debe realizar los seis pasos anteriores. El uso de este CSP para establecer núcleos en tiempo real suaves sin realizar también este trabajo de configuración adicional da como resultado un error en el sistema y requiere que se recupere.

La jerarquía de este CSP es la siguiente:

WindowsIoT
   SoftRealTimeProperties
      SetRTCores

Se debe proporcionar un valor mayor que 0 y menor que el número total de núcleos del dispositivo al parámetro SetRTCores. No dude en establecer este CSP con cualquier herramienta que use su organización para configurar sus dispositivos o siga los pasos que se indican a continuación para usar el puente MDM.

Usar el proveedor WMI de puente MDM para configurar el CSP de WindowsIoT

Este CSP configura el sistema para el rendimiento en tiempo real. Debe proporcionar el número de núcleos de CPU para asignar a tareas en tiempo real, con el resto asignado para ejecutar tareas de usuario estándar o del sistema. Se debe proporcionar un valor numérico en el nodo SetRTCores. Este es el número de núcleos de CPU dedicados a cargas de trabajo en tiempo real. Los valores numéricos válidos deben ser al menos 1 y menores que el número de núcleos físicos de la CPU.

Los entornos que usan Instrumental de administración de Windows (WMI) pueden usar el proveedor WMI de puente MDM para hacerlo. Este es un ejemplo para establecer la configuración de RealTime con tres núcleos en tiempo real:

  1. Descargue la herramienta psexec.

  2. Ejecute un símbolo del sistema administrativo.

  3. En el símbolo del sistema, inicie PowerShell en la cuenta del sistema. psexec.exe -s -i powershell.exe

  4. Ejecute el siguiente script:

    $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. Reinicie la máquina para activar el cambio.

Sugerencia

Puede usar el mismo script para el número de núcleos en tiempo real que necesite, simplemente reemplazando los 3 de la segunda a la última línea por el número adecuado. Esto reservará núcleos a partir del núcleo más alto y bajará hacia abajo. Por lo tanto, reservar 3 núcleos en una CPU de 4 núcleos reservará núcleos 3, 2 y 1 y dejará el núcleo 0 para las tareas en tiempo real y del sistema. Tenga en cuenta que no hay ninguna garantía de que los núcleos en tiempo real vayan a permanecer más altos, ya que los índices principales en tiempo real permanecerán fijos si se aumenta el número de núcleos de CPU después.

Siguiente: Desarrollo de una aplicación de soft Real-Time