Real-Time 성능을 위해 디바이스를 설정하는 방법

이 가이드에서는 실시간 성능을 위해 디바이스를 설정하는 방법을 안내합니다.

참고

이 기능을 사용하는 유일한 방법은 특정 목적을 위해 사용자 지정 빌드된 애플리케이션 및 디바이스를 사용하는 것입니다. 애플리케이션 스레드에서 프로세서 코어 할당의 매핑은 실시간 및 표준 워크로드에 대한 물리적 디바이스 코어 및 해당 구성과 일치해야 합니다.

  1. 를 사용하여 유휴 상태 사용 안 함 powercfg.exe

  2. 시스템 서비스에 대한 보안 지침을 참조하여 다음 서비스를 사용하지 않도록 설정합니다.

    1. SysMain(슈퍼페치)
    2. DPS(진단 정책 서비스)
    3. Audiosrv(Windows Audio)
  3. 이 지침을 사용하여 Windows 업데이트 사용하지 않도록 설정합니다.

    참고

    이렇게 하면 보안 패치가 통과되지 않으므로 디바이스가 취약성에 노출됩니다. 즉, Windows 업데이트 에이전트가 CPU 코어 격리를 존중하지 않으므로 필요합니다. 유지 관리를 위해 디바이스를 다운할 수 있는 시간 동안 디바이스 보안을 보장하고 업데이트를 설치하는 것이 좋습니다.

    가동 중지 시간 동안 업데이트를 관리하는 좋은 예는 UWF 설명서에서 찾을 수 있습니다. 서비스 UWF 보호 디바이스 UWF 및 소프트 실시간을 사용하는 경우 이 프로세스는 두 기능에 대한 OS 업데이트 요구 사항을 동시에 처리해야 합니다.

  4. 실시간 성능을 위해 WindowsIoT CSP 를 설정합니다.

  5. ISR/DPC를 CPU0으로 마이그레이션하도록 RSS 구성

    참고

    이는 하드웨어에 따라 다르며 NIC에서 RSS를 지원하는 경우에만 수행할 수 있습니다.

  6. 선택 사항:디버깅을 위해 스레드된 DPC 사용 안 함

  7. 선택적:이 지침에 따라 특정 하드웨어 인터럽트용 사용자 지정 DPC 고정 드라이버를 배포합니다.

명령줄에서 이 구성 수행

이렇게 하면 전원이 켜진 상태에서 디바이스가 구성됩니다. 디바이스가 소프트 RT 성능을 유지하도록 하려면 컴퓨터에서 이 지침을 사용할 때마다 이러한 명령을 스크립트로 실행하도록 컴퓨터를 구성해야 합니다.

  1. cmd 프롬프트에서 이러한 두 명령을 실행합니다. 이렇게 하면 CPU 유휴 상태가 비활성화됩니다. 여기서 실행 지침이 없는 CPU는 절전 상태로 전환됩니다. 유휴 상태인 CPU가 새 지침을 실행하기 시작하는 데 지연이 있으므로 실시간 시나리오에서는 바람직하지 않습니다.

    powercfg.exe /setacvalueindex SCHEME_CURRENT SUB_PROCESSOR IdleDisable 1
    powercfg.exe /setactive SCHEME_CURRENT
    
  2. cmd 프롬프트에서 다음 세 가지 명령을 실행하여 DPS를 사용하지 않도록 설정합니다.

    sc query dps
    sc stop dps
    sc config dps start=disabled
    
  3. 다음 세 가지 명령을 cmd 프롬프트에서 실행하여 Audiosrv를 사용하지 않도록 설정합니다.

    sc query Audiosrv
    sc stop Audiosrv
    sc config Audiosrv start=disabled
    
  4. cmd 프롬프트에서 다음 세 가지 명령을 실행하여 SysMain을 사용하지 않도록 설정합니다.

    sc query SysMain
    sc stop SysMain
    sc config SysMain start=disabled
    
  5. cmd 프롬프트에서 다음 세 가지 명령을 실행하여 Windows 업데이트 사용하지 않도록 설정합니다.

    sc query wuauserv
    sc stop wuauserv
    sc config wuauserv start=disabled
    
  6. 스레드된 DPC를 사용하지 않도록 설정하려면 이 명령을 실행합니다.

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

Real-Time 디바이스가 계속 설정되도록 보장

프로덕션 환경에 실시간 디바이스를 배포하기 전에 디바이스가 업데이트를 수신하고 실시간 성능을 유지할 수 있도록 하는 데 필요한 다른 설정이 있습니다.

  • Windows 업데이트 다시 활성화하고, 업데이트를 설치하고, Windows 업데이트 다시 끌 수 있는 스크립트 설정
  • 디바이스 내 서비스를 사용하지 않도록 설정

WindowsIoT CSP란?

WindowsIoT CSP Windows IoT 디바이스를 구성하는 데 사용됩니다. 현재 이 CSP에서 사용할 수 있는 유일한 기능은 소프트 Real-Time 성능을 위해 디바이스를 구성하는 것입니다. 디바이스에서 소프트 실시간을 사용하기 위해 수행해야 하는 유일한 작업은 아닙니다. 이전 6단계도 수행해야 합니다. 이 CSP를 사용하여 이 추가 구성 작업을 수행하지 않고 소프트 실시간 코어를 설정하면 시스템 오작동이 발생하며 복구하려면 이미지 다시 설치가 필요합니다.

이 CSP의 계층 구조는 다음과 같습니다.

WindowsIoT
   SoftRealTimeProperties
      SetRTCores

0보다 크고 디바이스의 총 코어 수보다 작은 값을 SetRTCores 매개 변수에 제공해야 합니다. organization 디바이스를 구성하거나 아래 단계를 사용하여 MDM 브리지를 사용하는 데 사용하는 도구를 사용하여 이 CSP를 자유롭게 설정할 수 있습니다.

MDM Bridge WMI 공급자를 사용하여 WindowsIoT CSP 구성

이 CSP는 실시간 성능을 위해 시스템을 구성합니다. 실시간 작업에 할당할 CPU 코어 수를 제공해야 하며 나머지는 시스템 또는 표준 사용자 작업을 실행하기 위해 할당됩니다. SetRTCores 노드에서 숫자 값을 제공해야 합니다. 실시간 워크로드 전용 CPU 코어 수입니다. 유효한 숫자 값은 CPU의 실제 코어 수보다 1 이상이어야 합니다.

WMI(Windows Management Instrumentation)를 사용하는 환경에서는 MDM Bridge WMI 공급자를 사용하여 이를 수행할 수 있습니다. 다음은 세 개의 실시간 코어를 사용하여 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을 적절한 숫자로 바꿀 수 있습니다. 이렇게 하면 코어가 가장 높은 코어부터 시작하여 아래로 내려갈 수 있습니다. 따라서 4개의 코어 CPU에서 3개의 코어를 예약하면 코어 3, 2 및 1을 예약하고 시스템 및 비 실시간 작업에 코어 0을 남깁니다. 나중에 CPU 코어 수를 늘리면 실시간 코어 인덱스가 고정된 상태로 유지되므로 실시간 코어가 가장 높게 유지된다는 보장은 없습니다.

다음: 소프트 Real-Time 애플리케이션 개발