Поделиться через


Настройка устройства для производительности в режиме реального времени

В этом руководстве описано, как настроить устройство для производительности в режиме реального времени.

Примечание.

Единственным способом использования этой функции является приложение и устройство, созданные для конкретной цели. Сопоставление назначений ядра процессора в потоках приложений должно соответствовать ядрам физических устройств и их конфигурации для рабочих нагрузок в режиме реального времени и стандартных рабочих нагрузок.

  1. Отключение состояний простоя с помощью powercfg.exe

  2. См. рекомендации по безопасности системных служб, чтобы отключить следующие службы:

    1. SysMain (Superfetch)
    2. DPS (служба политики диагностики)
    3. Audiosrv (Windows Audio)
  3. Отключите Обновл. Windows с помощью этого руководства.

    Примечание.

    При этом устройство будет открываться для уязвимостей, так как исправления безопасности не будут проходить. Тем не более чем необходимо, так как агент Обновл. Windows не учитывает изоляцию ядра ЦП. Рекомендуется иметь план для обеспечения безопасности устройства и установки обновлений в периоды, когда устройство может быть снято для обслуживания.

    Совет

    Хороший пример управления обновлениями во время простоя можно найти в документации по UWF: устройства , защищенные службой UWF, если вы используете UWF и Soft Real-time, этот процесс должен заботиться о необходимости обновления ОС одновременно.

  4. Задайте CSP WindowsIoT для производительности в режиме реального времени.

  5. Настройка RSS для переноса ISR/DPCs на ЦП0

    Примечание.

    Это зависит от оборудования и может быть сделано только в том случае, если сетевой адаптер поддерживает RSS

  6. Необязательный вариант. Отключение потоковой отладки

  7. Необязательно. Развертывание пользовательского драйвера закрепления DPC для определенных аппаратных прерываний, следуя этим рекомендациям.

Выполнение этой конфигурации из командной строки

Это настраивает устройство во время включения. Чтобы убедиться, что устройство поддерживает производительность soft-RT, необходимо настроить компьютер для выполнения этих команд в качестве скрипта каждый раз, когда компьютер работает с этим руководством.

  1. Выполните эти две команды в командной строке. Это отключает состояния простоя ЦП, где ЦП без инструкций для выполнения будет вводить состояние экономии питания. Это нежелательно в сценариях реального времени, так как неактивные ЦП имеют задержку при запуске новых инструкций:

    powercfg.exe /setacvalueindex SCHEME_CURRENT SUB_PROCESSOR IdleDisable 1
    powercfg.exe /setactive SCHEME_CURRENT
    
  2. Выполните следующие три команды в командной строке, чтобы отключить DPS:

    sc query dps
    sc stop dps
    sc config dps start=disabled
    
  3. Выполните следующие три команды в командной строке, чтобы отключить Audiosrv:

    sc query Audiosrv
    sc stop Audiosrv
    sc config Audiosrv start=disabled
    
  4. Выполните следующие три команды в командной строке, чтобы отключить SysMain:

    sc query SysMain
    sc stop SysMain
    sc config SysMain start=disabled
    
  5. Выполните следующие три команды в командной строке, чтобы отключить Обновл. Windows:

    sc query wuauserv
    sc stop wuauserv
    sc config wuauserv start=disabled
    
  6. Выполните эту команду, чтобы отключить потоковые ЦП

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

Обеспечение настройки устройства в режиме реального времени

Перед развертыванием устройства в рабочей среде в режиме реального времени требуется другая настройка, чтобы убедиться, что устройство может получать обновления и поддерживать производительность в режиме реального времени:

  • Настройка скрипта, который может повторно обновлять Обновл. Windows, устанавливать обновления и выключать Обновл. Windows еще раз
  • Настройте проверки, чтобы убедиться, что службы на устройстве остаются отключенными

Что такое CSP WindowsIoT?

Используется WindowsIoT CSP для настройки устройств Windows IoT. В настоящее время единственными функциями, доступными в этом CSP, является настройка устройства для производительности Soft Real-Time. Это не единственная работа, которую необходимо выполнить для использования обратимого реального времени с устройством. Кроме того, необходимо выполнить предыдущие шесть шагов. Использование этого CSP для установки мягких ядер в режиме реального времени без выполнения этой дополнительной работы конфигурации приводит к сбоям системы и требует повторного восстановления.

Иерархия этого CSP выглядит следующим образом:

WindowsIoT
   SoftRealTimeProperties
      SetRTCores

Значение больше 0 и меньше общего числа ядер на устройстве должно быть предоставлено параметру SetRTCores. Вы можете настроить этот CSP с помощью любого средства, используемого вашей организацией для настройки своих устройств, или использовать приведенные ниже действия, чтобы использовать мост MDM.

Использование поставщика WMI моста MDM для настройки CSP WindowsIoT

Эта служба CSP настраивает систему для производительности в режиме реального времени. Необходимо указать количество ядер ЦП, выделяемых для задач в режиме реального времени, а остальные — для выполнения системных или стандартных задач пользователей. Числовое значение должно быть указано в узле SetRTCores. Это число ядер ЦП, выделенных для рабочих нагрузок в режиме реального времени. Допустимые числовые значения должны быть не менее 1 и меньше числа физических ядер цП.

Среды, использующие инструментарий управления Windows (WMI), могут использовать поставщик WMI моста MDM для выполнения этого. Ниже приведен пример настройки конфигурации RealTime с тремя ядрами в режиме реального времени:

  1. Скачайте средство psexec.

  2. Запустите административную командную строку.

  3. В командной строке запустите PowerShell в системной учетной записи psexec.exe -s -i powershell.exe

  4. Выполните следующий скрипт:

    $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. Перезапустите компьютер, чтобы активировать изменение.

Совет

Один и тот же сценарий можно использовать для любого количества ядер реального времени, просто заменив 3 в последней строке соответствующим числом. Это зарезервирует ядра, начиная с самого высокого ядра и спускаясь вниз. Поэтому резервирование 3 ядер на 4 ядра ЦП будет резервировать ядра 3, 2 и 1 и оставить ядро 0 для системных и нереационных задач в режиме реального времени. Обратите внимание, что нет никаких гарантий того, что ядра в режиме реального времени будут оставаться самыми высокими, так как индексы ядра в режиме реального времени останутся фиксированными при увеличении количества ядер ЦП после этого.

Далее: разработка приложения в режиме реального времени