Windows의 「프로세서 스케줄링」을 「백그라운드 서비스」로 바꾸면 무슨 일이 일어나는가 - quantum, 우선도 부스트, P 코어 / E 코어까지 정리

· 업데이트: · · Windows, 성능 튜닝, 스케줄링, 오디오, CPU

수정 이력(1건, 최종 수정 2026년 09월 01일)

이 글에 적용한 변경 사항의 기록입니다. 보관해 둔 수정 전 버전은 DOI가 부여된 고정 URL에서 읽을 수 있습니다.

일본어 원문의 완역으로 다시 번역했습니다. 기존 한국어판은 원문의 일부만 옮긴 축약본이라 절, 표, Mermaid 그림, 그림 설명, FAQ가 빠져 있었습니다. 일본어 원문에 맞춰 이들을 모두 복원했고, 기술적인 주장은 일본어판과 같습니다. 수정 전 버전 보기 (DOI: 10.5281/zenodo.21635161)
최초 공개
이 글을 인용하기(DOI: 10.5281/zenodo.21635160)

이 글은 Zenodo에 보관되어 있습니다. 항상 최신 버전으로 연결되는 DOI와 지금 보고 있는 버전에 고정된 DOI를 아래에 함께 제시합니다.

小村 豪 (2026). 「Windows의 「프로세서 스케줄링」을 「백그라운드 서비스」로 바꾸면 무슨 일이 일어나는가 - quantum, 우선도 부스트, P 코어 / E 코어까지 정리」. 합동회사 코무라소프트. https://doi.org/10.5281/zenodo.21635160 https://comcomponent.com/ko/blog/2026/03/16/003-windows-processor-scheduling-background-services-p-e-cores/

DOI(최신 버전)
10.5281/zenodo.21635160
DOI(이 버전)
10.5281/zenodo.22217445

「앱을 전면에서 빼면 소리가 지직거린다」
프로세서 스케줄링백그라운드 서비스로 하면 안정됐다」

Windows에서는 예전부터 이런 이야기가 나옵니다. 특히 오디오, 영상, 계측, 배포, 상주 처리처럼 UI보다 연속 처리가 더 중요한 장면에서는 신경 쓰입니다.

다만 이 설정은 마법의 고속화 스위치가 아닙니다. CPU의 클럭을 직접 올리는 설정도, 앱을 Windows 서비스로 바꾸는 설정도, P 코어로 고정하는 설정도 아닙니다. 주로 바뀌는 것은 전면 앱과 배후에서 도는 처리 사이에서 CPU 시간을 어떻게 나누는가입니다.

이 설정이 바꾸는 것프로세서 스케줄링 설정은 클럭을 올리는 설정도 서비스화나 P 코어 고정의 설정도 아니라 전면 앱과 배후 처리 사이의 CPU 시간 배분 방식을 바꾸는 설정임을 보여주는 그림.이것들은 바꾸지 않는다바꾸는 것은프로세서 스케줄링 설정클럭·서비스화·코어 고정전면과 배후로의 CPU 시간 배분

그림 1: 고속화 스위치가 아니라 CPU 시간 배분 방식을 바꾸는 설정으로 읽는다.

이 글에서는 프로그램백그라운드 서비스로 무엇이 바뀌는지를 Windows 스케줄러의 기본, quantum(타임 슬라이스), foreground의 우대, 그리고 P 코어 / E 코어를 가진 CPU의 동작까지 이어서 정리합니다.

1. 먼저 결론

결론만 먼저 나열하면 포인트는 다음입니다.

  • 이 설정이 직접 바꾸는 것은 CPU의 「마력」보다 CPU 시간의 「배분 방식」입니다.
  • 프로그램은 전면 앱을 우대하기 쉽고, 백그라운드 서비스는 전면과 배후의 처리를 더 균등하게 다루는 방향입니다.
  • 그래서 전면 UI보다 뒤에서 도는 연속 처리의 마감이 중요한 워크로드에서는 백그라운드 서비스가 효과가 있을 수 있습니다.
  • 다만 P 코어 / E 코어 CPU에서 「어느 코어에 올리는가」는 이제는 이 설정뿐만 아니라 QoS, 전원 정책, hybrid scheduling, Intel Thread Director 같은 것들이 더 강하게 작용합니다.
  • 백그라운드 서비스로 했다고 해서 「배경 처리는 P 코어로」, 「서비스는 E 코어로」 같은 단순한 이야기가 되지는 않습니다.
  • 오디오의 지직거림이나 드롭아웃이 DPC / ISR, USB 절전, 드라이버, thermal throttling, EcoQoS 유래라면, 이 설정만으로는 고쳐지지 않습니다.

한마디로 이 설정은 CPU의 주파수 설정이 아니라 줄 서기의 규칙을 바꾸는 설정입니다.

효과가 있는 것과 없는 것의 큰 그림뒤에서 도는 연속 처리의 마감이 중요한 워크로드에는 백그라운드 서비스 쪽이 효과가 있을 수 있는 한편, P 코어/E 코어 중 어디에 올라가는가는 QoS나 전원 정책 등이 더 강하게 작용함을 보여주는 그림.효과가 있을 수 있다정하는 것은 다른 구조백그라운드 서비스 쪽뒤의 연속 처리 마감P 코어 / E 코어 선택QoS·전원 정책·hybrid scheduling

그림 2: 마감에는 효과가 있을 수 있지만, 코어 선택은 이 설정 밖의 구조가 정한다.

1.1 먼저 짚어 둘 용어

이 글에서는 6장쯤 읽어야 실체를 알 수 있는 용어가 앞부분에 먼저 나옵니다. 미리 정리해 둡니다.

용어 의미
quantum(타임 슬라이스) 스레드가 한 번의 차례로 연속 실행할 수 있는 시간 단위입니다. Windows는 clock tick(시스템 클럭의 인터럽트 간격)의 3분의 1을 1단위로 셉니다
ISR / DPC ISR은 Interrupt Service Routine(인터럽트 서비스 루틴), DPC는 Deferred Procedure Call(지연 프로시저 호출)입니다. 둘 다 드라이버가 인터럽트를 처리하는 구조로, 일반 스레드보다 먼저 실행되기 때문에 여기가 길어지면 앱 쪽은 기다리게 됩니다
MMCSS Multimedia Class Scheduler Service. 멀티미디어 처리를 하는 스레드가 자신을 등록하면 레지스트리 설정에 따라 우선도를 올려 주는 Windows의 서비스입니다
QoS Quality of Service. 스레드에 할당되는 「성능과 전력 효율의 구분」입니다. 우선도와는 별개의 축으로, 어떤 종류의 코어를 고를지나 프로세서의 전력 관리에 영향을 줍니다
EcoQoS 절전 쪽으로 기운 QoS 구분입니다. 앱이 SetProcessInformation / SetThreadInformation으로 명시적으로 붙입니다
underrun 음성 처리 등에서 마감까지 버퍼를 채우지 못해 데이터가 바닥나는 것입니다. 지직거림이나 드롭아웃으로 들립니다
core parking 부하가 낮을 때 사용하지 않는 논리 프로세서를 재워 두는 전력 관리 구조입니다
C-state CPU의 idle 상태 깊이입니다. 깊을수록 절전되지만 복귀에 시간이 걸립니다
P 코어 / E 코어 성능 중시 코어와 전력 효율 중시 코어입니다. 둘 다 갖춘 CPU 구성을 hybrid(헤테로지니어스)라고 부릅니다
Intel Thread Director Intel의 hybrid CPU가 스레드의 실행 특성 힌트를 OS로 전달하는 구조입니다. Windows 11이 코어 선택 판단에 사용합니다

이 글의 지식 맵

프로세서 스케줄링 설정은 내부적으로 Win32PrioritySeparation이라는 레지스트리 값과 연결되어, foreground와 background에 나눠 주는 quantum의 길고 짧음과 우대 정도를 전환할 뿐이며, CPU의 클럭이나 코어 고정을 직접 바꾸는 설정이 아닙니다. 백그라운드 서비스 쪽은 전면 우대를 약화시키기 때문에, 마감에 쫓기는 음성 처리 등의 underrun을 줄이는 경우가 있지만, 이는 MMCSS가 담당하는 우선도 인상과는 별개의 구조입니다. 현대의 Windows, 특히 P 코어 / E 코어의 hybrid CPU에서는 실제로 어느 코어에 배치되는지가 이 설정보다 Windows QoS나 Intel Thread Director를 사용하는 heterogeneous scheduling 정책 쪽이 더 강하게 작용하며, 최소화나 배터리 구동만으로도 QoS가 내려가 efficient core 쪽에 놓이는 경우도 있습니다. 원인을 파악하려면 DPC/ISR 지연을 Windows Performance Recorder와 Analyzer로 관측하는 절차가 효과적입니다.

프로세서 스케줄링 설정과 QoS의 지식 맵프로세서 스케줄링 설정이 Win32PrioritySeparation과 연결되어 quantum 배분·foreground 우대를 전환하는 오래된 구조라는 것, MMCSS나 Windows QoS가 underrun이나 P 코어 / E 코어 배치에 효과가 있다는 것, Intel Thread Director나 heterogeneous scheduling 정책이 hybrid CPU의 코어 선택을 결정한다는 것, DPC/ISR 지연 확인 수단을 보여주는 그림에서 구성할 수 있다에서 구성할 수 있다이용한다이용한다완화한다완화한다이용한다원인이 될 수 있다원인이 될 수 있다방지한다이용한다이용한다전제로 한다전제로 한다이용한다에서 확인할 수 있다에서 확인할 수 있다원인이 될 수 있다프로세서 스케줄링 설정Windows QoS(서비스 품질) 분류Win32PrioritySeparationquantum(타임 슬라이스)포그라운드 우대언더런(underrun)MMCSS(Multimedia Class Scheduler Service)efficient core 위주 배치EcoQoSDisableUserPresenceQosheterogeneous scheduling 정책(SchedulingPolicy 등)Intel Thread DirectorP코어/E코어 구성(하이브리드 CPU)Core ParkingDPC/ISR 지연WPR/WPA(Windows Performance Recorder/Analyzer)

그림의 실선은 항상 성립하는 관계, 점선은 조건이 붙는 관계입니다(성립 조건은 상세 페이지의 관계별 설명에 적혀 있습니다). 관계 전체 목록(총 18건, 근거와 확신도 포함)과 주요 개념의 정의는 지식 맵 상세 페이지에 정리되어 있습니다(일본어). 데이터: JSON-LD / Turtle

2. 애초에 이 설정은 무엇을 바꾸고 있는가

설정 화면의 프로세서 스케줄링은 Windows에 예전부터 있는 스케줄링 방침 중 하나입니다. 내부적으로는 Win32PrioritySeparation과 연결된, 꽤 역사가 있는 설정입니다.

여기서 먼저 짚어 두고 싶은 것은 Windows가 CPU를 사용할 때의 기본입니다.

  • 스케줄러는 먼저 실행 가능한 스레드 중에서 우선도가 높은 것을 고릅니다.
  • 같은 우선도라면 일정 시간씩 순서대로 실행합니다.
  • 이 「일정 시간」이 quantum(타임 슬라이스)입니다.
yesno실행 가능한 스레드스케줄러가 최우선 스레드를 고른다1 quantum만큼 실행한다같은 우선도의 대기 스레드가 있는가컨텍스트 스위치

그림 3: 스케줄러는 최우선 스레드를 고르고, 1 quantum씩 순서대로 달리게 한다.

프로세서 스케줄링이 주로 건드리고 있는 것은 이 quantum의 배분 방식foreground를 얼마나 우대할 것인가입니다.

여기서 말하는 foreground는 지금 사용자가 다루고 있는 전면 앱입니다. 반대로 뒤로 돌아간 처리, 다른 프로세스의 worker, Windows 서비스, 보조 프로세스, 상주 처리 등은 background 쪽으로 기울기 쉬워집니다.

중요한 것은 백그라운드 서비스를 골라도 자신의 앱이 Windows 서비스가 되는 것은 아니라는 점입니다. 바뀌는 것은 서비스라는 이름의 종류가 아니라 foreground와 background의 CPU 배분 규칙입니다. 여기, 이름이 꽤 헷갈립니다.

「백그라운드 서비스」라는 이름의 헷갈림백그라운드 서비스를 골라도 자신의 앱이 Windows 서비스가 되는 것은 아니며, 바뀌는 것은 foreground와 background의 CPU 배분 규칙뿐임을 보여주는 그림.이렇게는 되지 않는다바뀌는 것은백그라운드 서비스를 고른다앱이 Windows 서비스가 된다전면과 배후의 CPU 배분 규칙

그림 4: 이름과 달리, 바뀌는 것은 프로세스의 종류가 아니라 배분 규칙 쪽이다.

2.1 설정 화면까지 가는 길

이 설정은 제어판 상당히 깊은 곳에 있습니다. 도달 경로는 2가지입니다.

  • Win + R에서 SystemPropertiesPerformance.exe를 실행하면 「성능 옵션」이 바로 열립니다. 그 「고급」 탭에 프로세서 스케줄링이 있습니다.
  • 손으로 따라가려면 「시스템 속성」 > 「고급」 탭 > 「성능」의 「설정」 > 「고급」 탭 순서입니다. 「시스템 속성」 자체는 sysdm.cpl로 열 수 있습니다.

고른 결과는 레지스트리의 다음 값에 기록됩니다.

항목 내용
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl
값 이름 Win32PrioritySeparation
형식 REG_DWORD
범위 0x0~0x3F

현재 값만 확인하고 싶다면 PowerShell로 읽을 수 있습니다. 설정을 되돌릴 수 있도록 변경 전 값은 적어 두는 것이 안전합니다.

UI 선택과 레지스트리의 관계성능 옵션 UI에서 고른 결과는 Win32PrioritySeparation이라는 레지스트리 값에 기록되고, 현재 값은 PowerShell로 읽을 수 있으므로 변경 전 값을 적어 두고 나서 건드린다는 흐름을 보여주는 그림.UI에서 선택한다Win32PrioritySeparation에 기록된다PowerShell로 현재 값을 읽을 수 있다변경 전 값을 적어 두고 나서 바꾼다

그림 5: UI 선택의 실체는 레지스트리 값이므로, 건드리기 전에 현재 값을 적어 둔다.

Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\PriorityControl' -Name 'Win32PrioritySeparation'

2.2 대상이 되는 Windows와 값의 의미

「성능 옵션」의 프로세서 스케줄링은 Windows 10 / Windows 11 클라이언트에도, Windows Server에도 있습니다. 다만 같은 값이라도 클라이언트와 서버에서 해석이 다르다는 점이 이 설정을 헷갈리게 만듭니다.

Microsoft의 레지스트리 해설에서는 Win32PrioritySeparation이 6비트를 2비트씩 3묶음(AABBCC)으로 나눈 비트마스크라고 설명합니다.

  • 상위 2비트: quantum이 길게인지 짧게인지
  • 중위 2비트: quantum이 가변인지 고정인지
  • 하위 2비트: foreground를 background의 몇 배 우대할지(가변일 때만 적용)

그리고 UI에서의 선택이 각각 다음 값을 기록한다고 되어 있습니다(당시의 UI 표기는 ApplicationsBackground services로, 지금의 프로그램백그라운드 서비스에 대응합니다).

UI 선택 기록되는 값 의미
프로그램 100110(0x26) 짧은 편의 가변 quantum. foreground는 background의 3배
백그라운드 서비스 011000(0x18) 긴 편의 고정 quantum. foreground와 background가 동일하게 취급

수치를 한 걸음 더 들어가 보면, Microsoft의 해설 기사에서는 0x26일 때의 quantum이 foreground 18, background 6, 0x18일 때는 양쪽 다 36이라고 설명합니다. quantum은 clock tick의 3분의 1 단위이므로 tick으로 환산하면 전면 6 tick / 배후 2 tick양쪽 다 12 tick이 됩니다. 같은 기사에서는 x86 멀티프로세서 머신의 clock tick이 15.625밀리초였던 예가 나와 있으며, 이 경우 「전면이 약 94밀리초까지 연속으로 달리는 설정」과 「전면도 배후도 약 188밀리초씩 달리는 설정」의 차이가 됩니다.

백그라운드 서비스 쪽은 한 번에 달리는 시간은 길지만 전면만 편애하지 않는 배분 방식입니다. 배후 처리가 「순서가 돌아오지 않는」 상태가 되기 어려워집니다.

두 설정에서의 quantum 배분 방식프로그램 설정에서는 전면이 6 tick, 배후가 2 tick으로 전면이 길게 달리고, 백그라운드 서비스 설정에서는 양쪽 다 12 tick씩으로 한 번에 달리는 시간은 길지만 전면만 편애하지 않는 배분 방식이 됨을 보여주는 그림.프로그램 설정전면 6 tick·배후 2 tick백그라운드 서비스 설정전면도 배후도 12 tick배후에 순서가 돌아오지 않는 상태가 되기 어렵다

그림 6: 한쪽은 전면을 길게 달리게 하고, 다른 쪽은 긴 지속 시간을 균등하게 배분한다.

참고로 이 기본값의 해석에도 OS 차이가 있습니다. Microsoft의 Win32_OperatingSystem 설명에서는 클라이언트 Windows가 가변 길이 quantum으로 전면 앱의 quantum이 길다, Windows Server는 고정 길이 quantum이 기본이라고 되어 있습니다. 레지스트리 해설 쪽도 같은 기본값 0x2가 클라이언트에서는 「짧은 편·가변·전면 3배」, 서버에서는 「긴 편·고정·균등」을 의미한다고 적고 있습니다. 서버가 처음부터 백그라운드 서비스에 준하는 쪽으로 기울어 있는 것은 이 때문입니다.

같은 기본값이라도 클라이언트와 서버에서 해석이 다르다같은 기본값이라도 클라이언트 Windows에서는 짧은 편·가변·전면 3배 우대, Windows Server에서는 긴 편·고정·균등으로 해석되며, 서버가 처음부터 백그라운드 서비스에 준하는 쪽으로 기울어 있음을 보여주는 그림.클라이언트서버같은 기본값짧은 편·가변·전면 3배긴 편·고정·균등처음부터 백그라운드 서비스에 준함

그림 7: 값 자체가 아니라 OS 쪽이 기본 해석을 가른다.

여기서 든 구체적인 수치는 Windows 2000 / XP 세대의 Microsoft 문서와 해설 기사에 근거한 것입니다. 레지스트리 값과 UI의 대응은 지금도 같지만, 실제 quantum의 취급은 OS 버전에 따라 달라질 수 있으므로 수치는 「어느 정도 자릿수의 이야기인지」의 기준으로 읽어 주십시오.

3. 프로그램백그라운드 서비스로 무엇이 바뀌는가

양자의 차이는 표로 비교해 보면 이해하기 쉽습니다.

관점 프로그램 백그라운드 서비스
기본 사고방식 전면 앱의 체감을 올리기 쉽다 전면과 배후의 처리를 더 균등하게 다룬다
foreground의 우대 강함 작아짐
CPU가 막혔을 때 UI는 쾌적하게 움직이기 쉽다 뒤의 연속 처리가 밀리지 않기 쉽다
맞기 쉬운 장면 대화 중심의 데스크톱 조작 서비스, 캡처, 인코딩, 연속 처리
흔한 부작용 배경 처리의 마감을 놓치기 쉽다 전면 UI의 경쾌함이 조금 떨어질 수 있다

클라이언트용 Windows는 기본적으로 전면 앱을 쾌적하게 움직이는 방향입니다. 그래서 보통의 데스크톱 조작에서는 프로그램이 자연스럽습니다.

한편으로 이야기가 달라지는 경우도 있습니다.

  • 뒤에서 계속 버퍼를 채우는 오디오 처리
  • UI는 가볍지만 별도 스레드 / 별도 프로세스에서 계속 실행되는 캡처나 분석
  • 전면에 브라우저나 IDE를 띄워도 뒤 처리의 마감을 지키고 싶은 경우
  • 서버 쪽, 서비스 쪽, 상주 쪽 워크로드

이럴 때는 foreground만 강하게 우대하기보다 뒤의 처리가 CPU를 되찾기 쉬운 편이 안정적입니다. 그런 의미에서 백그라운드 서비스는 이치에 맞는 경우가 있습니다.

어느 배분 방식이 맞는가대화 중심의 데스크톱 조작이라면 전면 우대의 프로그램 설정이 자연스럽고, 뒤의 연속 처리 마감이 중요한 워크로드라면 뒤가 CPU를 되찾기 쉬운 백그라운드 서비스 설정이 이치에 맞음을 보여주는 그림.대화 중심의 조작뒤의 마감이 중요워크로드의 성격프로그램이 자연스럽다백그라운드 서비스가 후보뒤의 처리가 CPU를 되찾기 쉽다

그림 8: 전면의 쾌적함과 뒤의 마감 중 어느 쪽을 지킬지에 따라 고를 쪽이 달라진다.

4. 왜 음성이나 연속 처리에서 효과가 있을 때가 있는가

오디오의 지직거림이나 드롭아웃을 예로 들면 이해하기 쉽습니다.

음성 처리는 「평균적으로 빠른」 것만으로는 부족합니다. 수 밀리초마다, 혹은 더 짧은 단위로 필요한 타이밍까지 버퍼를 채울 필요가 있습니다. 평균 CPU 사용률이 낮아도 마침 그 순간에 달리지 못하면 소리가 끊깁니다.

구체적인 상황을 하나 들어 보겠습니다.

  • 전면에는 브라우저나 DAW의 UI, 또는 다른 앱이 있다
  • 뒤에서는 음성 처리 스레드가 일정 주기로 돌면서 버퍼를 공급하고 있다
  • 음성 처리 스레드는 고우선도까지는 아니고, MMCSS나 QoS도 충분히 쓰지 못하고 있다
  • CPU가 그럭저럭 붐비고 있다

이때 프로그램이라면 전면 앱 쪽이 길게 달리기 쉬워, 뒤의 음성 처리가 「평균으로는 문제없는데 그 순간만 늦어지는」 일이 있을 수 있습니다. 이것이 이어지면 underrun이 되어 지직거림으로 이어집니다.

반대로 백그라운드 서비스로 돌리면 뒤의 연속 처리가 CPU를 되찾기 쉬워져 마감을 놓치기 어려워지는 경우가 있습니다.

즉 효과가 있을 때 일어나고 있는 것은 「CPU가 빨라졌다」가 아니라,

  • 전면 앱의 우대가 조금 약해진다
  • 뒤의 연속 처리가 끼어들 수 있는 횟수나 타이밍이 개선된다
  • 결과적으로 deadline miss가 줄어든다

라는 흐름입니다.

소리의 지직거림이 줄어드는 흐름프로그램 설정에서는 전면이 길게 달려 뒤의 음성 처리가 그 순간만 늦어져 underrun이 될 수 있고, 백그라운드 서비스로 돌리면 전면 우대가 약해져 뒤가 끼어들기 쉬워지고 deadline miss가 줄어드는 흐름을 보여주는 그림.전면이 길게 달린다음성 처리가 그 순간만 늦어진다underrun으로 지직거림배분 방식을 균등 쪽으로 돌린다뒤가 끼어들기 쉬워진다deadline miss가 줄어든다

그림 9: 효과가 있을 때는 CPU가 빨라진 것이 아니라, 뒤의 처리가 마감에 맞게 되는 것이다.

5. 원리 - quantum과 foreground의 우대

조금 더 로우 레벨 쪽에서 보면, 효과가 나는 경위는 이렇습니다.

5.1 quantum이 길면 같은 우선도의 상대는 기다리기 쉽다

같은 우선도대에서 경쟁하는 스레드가 여럿일 때, 한 스레드가 긴 quantum을 받을수록 다른 스레드는 그만큼 기다리기 쉬워집니다.

전면 앱이 우대되는 설정에서는 foreground 쪽이 길게 연속 실행하기 쉬워집니다. 그러면 비슷한 우선도인 background 쪽은 그만큼 「지금은 아니다」를 당하기 쉬워집니다.

음성, 영상, 주기 계측, 폴링, 감시처럼 조금씩이라도 정기적으로 달리고 싶은 처리에서는 이 차이가 영향을 줍니다.

긴 quantum이 동급 상대를 기다리게 한다같은 우선도대에서 경쟁하는 스레드가 여럿일 때, 한쪽이 긴 quantum을 받을수록 다른 스레드는 기다리기 쉬워지고, 조금씩이라도 정기적으로 달리고 싶은 처리에서는 이 차이가 영향을 줌을 보여주는 그림.같은 우선도대에서 경쟁하고 있다한쪽이 긴 quantum을 받는다다른 스레드는 기다리기 쉽다정기적으로 달리고 싶은 처리일수록 차이가 난다

그림 10: quantum의 길이는 동급으로 경쟁하는 상대의 대기 시간으로 그대로 되돌아온다.

5.2 Windows는 foreground에 여러 형태로 신경 쓴다

Windows는 원래 foreground에 상당히 신경을 씁니다. 대표적인 것은 다음과 같습니다.

  • 전면에 온 프로세스의 우대
  • 입력을 받은 윈도우를 가진 스레드의 우대
  • I/O 완료 후 스레드에 대한 동적 우선도 부스트

즉 앱을 전면에서 빼는 것만으로도 스케줄링상의 취급은 평범하게 바뀝니다. 백그라운드 서비스는 이 foreground 우대 중에서도 특히 CPU 시간 배분의 편향을 줄이는 방향이라고 생각하면 이해하기 쉽습니다.

Windows가 foreground에 신경 쓰는 방식Windows는 전면에 온 프로세스의 우대, 입력을 받은 윈도우의 스레드 우대, I/O 완료 후의 동적 우선도 부스트 등 여러 방식으로 foreground에 신경 쓰기 때문에, 전면에서 빼는 것만으로 취급이 바뀜을 보여주는 그림.전면 프로세스의 우대전면에서 빼는 것만으로 취급이 바뀐다입력 윈도우의 스레드 우대I/O 완료 후의 동적 부스트이 설정은 배분의 편향을 줄이는 쪽

그림 11: 전면 우대는 여러 장치가 겹친 결과이며, 이 설정은 그중 배분 편향에 작용한다.

5.3 「CPU를 게으르게 두지 않는다」는 반은 맞고 반은 어긋난다

「CPU를 게으르게 두지 않는다」는 표현은 감각적으로는 이해가 갑니다. 뒤의 처리가 뒤로 밀리기 어렵다는 의미에서는 확실히 그렇습니다.

다만 기술적으로는 조금 더 정확하게 말하는 편이 좋으며, 실제로 바뀌고 있는 것은 CPU의 idle 제어나 주파수 그 자체보다 스레드를 어떤 순서로, 얼마만큼의 길이로 달리게 하는가입니다.

그래서 이 설정은,

  • turbo boost를 올리는 설정이 아니다
  • C-state를 끄는 설정이 아니다
  • core parking을 직접 바꾸는 설정이 아니다
  • P 코어 고정 설정이 아니다

라는 것이 됩니다.

「게으르게 두지 않는다」의 정확한 의미이 설정으로 실제로 바뀌는 것은 CPU의 idle 제어나 주파수가 아니라 스레드를 어떤 순서로 얼마만큼 달리게 하는가이며, turbo나 C-state, core parking, P 코어 고정의 설정이 아님을 보여주는 그림.실제로 바뀌는 것은바뀌지 않는 것은CPU를 게으르게 두지 않는다, 는 감각달리는 순서와 길이turbo·C-state·core parking·코어 고정

그림 12: 「게으르게 두지 않는다」의 실체는 전력 제어가 아니라 순서와 지속 시간의 변경에 있다.

6. P 코어 / E 코어 CPU에서는 어떻게 효과가 있는가

여기가 가장 오해되기 쉬운 부분입니다.

백그라운드 서비스로 했다고 해서 Windows가 「배경 처리니까 E 코어」, 「전면이니까 P 코어」라고 단순하게 정하는 것은 아닙니다. 현대의 Windows, 특히 Windows 11의 hybrid CPU에서는 P 코어 / E 코어의 선택이 더 다단계입니다.

6.1 이름은 비슷하지만 별개

먼저 비슷한 이름의 별개인 것이 2가지 있습니다.

  1. 프로세서 스케줄링백그라운드 서비스
    • 오래된 UI에 있는 설정
    • 주로 foreground / background의 CPU 시간 배분에 작용
    • quantum과 foreground boost 계통의 이야기
  2. QoS의 Utility / Eco / Low
    • 현대 Windows의 power / performance 분류
    • core 선택이나 주파수 제어에도 작용
    • P 코어 / E 코어의 동작에 직접 관련되기 쉽다

이 2가지는 같지 않습니다.

이름은 비슷하지만 별개인 것프로세서 스케줄링 설정은 오래된 UI의 설정으로 quantum과 foreground 우대 계통에 작용하고, QoS는 현대의 power/performance 분류로 코어 선택과 주파수 제어에 작용하는 별개임을 보여주는 그림.같지 않다프로세서 스케줄링 설정quantum과 foreground 우대 계통QoS 분류코어 선택·주파수 제어 계통

그림 13: 이름의 느낌은 비슷해도, 작용하는 레이어가 완전히 다르다.

6.2 Windows 11의 QoS와 visibility

현대의 Windows에서는 priority뿐만 아니라 QoS도 작용합니다. 특히 heterogenous processor, 즉 P 코어 / E 코어 같은 구성에서는 QoS가 어떤 종류의 코어를 선호할지에 영향을 줍니다.

Windows 11의 대략적인 분류는 다음과 같습니다.

상태 / 클래스 QoS 이미지 P / E 코어에의 영향 어디에 적혀 있는가
전면이며 focus 중인 windowed app High 고성능 쪽 QoS 분류표의 In Focus
표시는 되어 있지만 focus는 아닌 app Medium 중간 QoS 분류표의 Visible
최소화 / 완전히 숨겨진 app Low 배터리 시에는 efficient core 쪽 QoS 분류표의 Minimized, or Fully Occluded
background services Utility 배터리 시에는 efficient cores 쪽 QoS 레벨표의 Utility
명시적으로 EcoQoS를 붙인 처리 Eco efficient cores 쪽 QoS 레벨표의 Eco
MMCSS가 배치 버퍼링용으로 붙인 스레드 Media 효율 중시로 주파수를 낮춤 QoS 레벨표의 Media
음성 deadline을 가진 multimedia thread Deadline 고성능 쪽 QoS 레벨표의 Deadline

이 표는 Microsoft Learn의 「Quality of Service」에 있는 2개의 표, 즉 QoS 레벨 목록(High / Medium / Low / Utility / Eco / Media / Deadline)과 QoS 분류(윈도우의 표시 상태로 QoS를 정하는 대응)를 다시 정리한 것입니다. 관측에서 일으킨 분류가 아닙니다. 같은 문서에는 소리를 내고 있다고 판정된 프로세스는 High로 취급한다는 규정과, 위의 어느 것에도 해당하지 않는 스레드는 우선도 등의 휴리스틱으로 자동 할당한다는 설명도 있습니다.

하나 더, 측정하는 사람에게 중요한 기술이 있습니다. 배터리 구동 중에 일정 시간 사용자 입력이 없으면 전면 앱의 QoS가 Medium으로 내려갈 수 있다는 기능입니다. 문서에는 배터리로 성능 측정을 할 때는 이 기능을 비활성화해야 한다는 주의사항이 있고, 비활성화 방법으로 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerThrottlingDisableUserPresenceQos(REG_DWORD)에 1을 설정하는 절차가 안내되어 있습니다. 입력이 없는 자동 테스트에서 「배터리일 때만 느리다」가 나오면 먼저 여기를 의심하는 것이 빠릅니다.

여기서 중요한 것은 최소화한 것만으로 QoS가 바뀔 수 있다는 점입니다. 즉 하이브리드 CPU의 노트북에서는,

  • 앱을 전면에서 뺐다
  • 게다가 최소화했다
  • 그 결과 QoS가 내려갔다
  • efficient core 쪽에 놓이기 쉬워졌다
  • 체감이나 마감이 악화됐다

라는 일이 평범하게 일어납니다.

최소화에서 마감 악화까지의 연쇄하이브리드 CPU의 노트북에서는 앱을 전면에서 빼고 최소화하면 QoS가 내려가고, 배터리 시에는 efficient core 쪽에 놓이기 쉬워져 체감이나 마감이 악화되는 연쇄가 평범하게 일어남을 보여주는 그림.배터리 시에는 특히전면에서 빼고 최소화QoS가 내려간다efficient core 쪽에 놓인다체감이나 마감이 악화

그림 14: 최소화라는 조작만으로 코어 배치까지 이어지는 연쇄가 일어날 수 있다.

6.3 Thread Director와 hybrid scheduling

Intel의 12th Gen 이후 hybrid CPU에서는 Intel Thread Director가 OS에 힌트를 냅니다. Windows 11은 이것을 사용해 P 코어 / E 코어의 할당을 더 똑똑하게 정합니다.

덧붙여 Windows 쪽에는 heterogenous scheduling 정책이 있습니다.

  • SchedulingPolicy
  • ShortSchedulingPolicy
  • ShortThreadRuntimeThreshold

이것들은 Automatic으로 두면 QoS와 시스템 구성을 보고 OS가 정하는 구조입니다. 게다가 그 뒤에서는 processor power management 쪽의 core parking engine이나 performance state engine도 동작하고 있습니다.

전체상은 대체로 이렇게 파악하면 이해하기 쉽습니다.

ThreadPriority / dynamic priorityQoS (High / Medium / Low / Utility / Eco / Deadline)Visibility / audible / input stateHybrid scheduling policySCHEDPOLICY / SHORTSCHEDPOLICYIntel Thread Director hintsWindows 11 on Intel hybridWindows scheduler + Processor Power ManagementP 코어 / E 코어와 주파수가 정해진다

그림 15: 우선도·QoS·가시 상태·scheduling 정책·Thread Director의 힌트가 합류해 코어와 주파수가 정해진다.

7. 어떤 때 효과가 있고, 어떤 때는 효과가 없는가

실무적으로는 효과가 있기 쉬운 경우와 별개 문제인 경우를 나누어 보는 편이 빠릅니다.

7.1 효과가 있기 쉬운 경우

이럴 때는 백그라운드 서비스가 합리적인 대책이 될 수 있습니다.

  • 전면 앱으로 포커스를 옮기면 뒤의 연속 처리만 불안정해진다
  • CPU 사용률은 포화되지 않았는데 주기 처리의 마감만 떨어진다
  • 크리티컬한 처리가 legacy app / helper process / worker thread 쪽에 있고, MMCSS나 QoS의 사용이 충분하지 않다
  • 서비스나 상주 처리가 주역이고, 전면 UI의 쾌적함보다 뒤 처리의 안정이 중요

7.2 효과가 없거나 별개 문제인 경우

반대로 이 설정만으로는 부족한 문제도 있습니다.

  • DPC / ISR 지연이 크다
  • USB controller나 audio driver의 불량
  • USB selective suspend나 디바이스 절전의 영향
  • thermal throttling
  • battery saver나 power throttling, EcoQoS의 영향
  • 버퍼 사이즈가 너무 작다
  • 앱이 이미 MMCSS / Deadline을 올바르게 쓰고 있고, 문제가 다른 곳에 있다

특히 Windows 11 + hybrid CPU 노트북에서는 visibility와 QoS의 변화가 꽤 크게 작용합니다. 최소화하면 느려진다, 배터리에서만 나빠진다는 상황이라면 프로세서 스케줄링보다 QoS / power 쪽을 의심하는 편이 맞을 확률이 높습니다.

증상으로 어느 쪽을 의심할지 판단하기포커스를 옮기면 뒤의 연속 처리만 불안정해진다면 이 설정이 후보가 되고, 최소화나 배터리에서만 악화되면 QoS나 power 쪽, DPC/ISR 지연이나 드라이버 유래라면 별개 문제로 파고든다는 구분을 보여주는 그림.전면으로 옮기면 뒤가 불안정최소화·배터리에서만 악화DPC / ISR·드라이버 유래증상이 나타나는 양상을 본다이 설정이 후보가 된다QoS / power 쪽을 의심한다이 설정으로는 고쳐지지 않는 별개 문제

그림 16: 증상의 조건 의존성이 이 설정·QoS·별개 문제 중 어느 것인지를 알려준다.

8. 실무에서의 관점

실제로 구분하려면 순서로는 다음이 이해하기 쉽습니다.

  1. 조건을 고정한다
    • AC 급전인가, 배터리인가
    • 전원 모드
    • 버퍼 사이즈
    • foreground / visible / minimized 상태
  2. 프로그램백그라운드 서비스를 같은 조건에서 비교한다
    • 체감뿐만 아니라 dropout 횟수, glitch 횟수, 처리 지연을 기록한다
  3. Windows 11 / hybrid CPU라면 QoS 쪽을 의심한다
    • 최소화에서만 악화되는가
    • audible 상태에서 바뀌는가
    • 배터리에서만 악화되는가
  4. 음성이나 영상이라면 MMCSS를 먼저 본다
    • 중요 스레드가 Windows에 「이것은 마감이 중요하다」고 전달되고 있는가
  5. 그래도 고쳐지지 않으면 DPC / ISR / USB / driver를 판다
    • 여기는 스케줄러 이전의 이야기가 된다
구분의 순서먼저 조건을 고정하고, 프로그램과 백그라운드 서비스를 같은 조건에서 비교하고, hybrid CPU라면 QoS 쪽을 의심하고, 음성이나 영상이라면 MMCSS를 확인하고, 그래도 고쳐지지 않으면 DPC/ISR나 드라이버를 파고든다는 구분 순서를 보여주는 그림.조건을 고정한다2가지 설정을 같은 조건에서 비교hybrid CPU라면 QoS 쪽을 의심음성·영상이라면 MMCSS를 확인남으면 DPC / ISR·드라이버를 판다

그림 17: 구분은 조건 고정에서 시작하고, 스케줄러 이전의 층은 마지막에 판다.

8.1 각각 무엇을 어떻게 확인하는가

「의심한다」에서 멈추지 않도록 확인 방법을 정리해 둡니다.

확인하고 싶은 것 구체적인 확인법
지금의 프로세서 스케줄링 설정 SystemPropertiesPerformance.exe를 열거나, 2.1의 PowerShell로 Win32PrioritySeparation을 읽는다
AC / 배터리와 전원 플랜 powercfg /getactivescheme으로 활성 전원 플랜을, powercfg /list로 목록을 확인해 기록한다
프로세스가 전력 조정되고 있는가 작업 관리자의 「세부 정보」 탭에서 열 머리글을 우클릭해 전력 조정 열을 추가한다. Windows 11에서는 「프로세스」 탭의 상태 열에도 효율성 모드 표시가 나타난다
배터리 시에 전면 앱의 QoS가 내려가지 않았는가 6.2의 DisableUserPresenceQos를 설정해 동작이 바뀌는지 비교한다
중요 스레드가 MMCSS를 쓸 수 있는가 자신의 코드라면 AvSetMmThreadCharacteristics / AvSetMmMaxThreadCharacteristics를 호출하고 있는지, 반환값 핸들이 유효한지 확인한다. 쓸 수 있다면 scheduling category에 따라 우선도가 올라가므로, Process Explorer의 스레드 목록에서 우선도를 보면 알 수 있다(High는 23~26, Medium은 16~22, Low는 8~15)
MMCSS의 태스크 정의 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\TasksAudio, Pro Audio, Capture, Playback 등의 태스크가 있고, Scheduling CategoryPriority를 확인할 수 있다
DPC / ISR 지연 wpr -start GeneralProfile -filemode로 트레이스를 뜨고, wpr -stop trace.etl로 멈춘 뒤 WPA의 DPC/ISR 그래프에서 모듈별 시간을 본다
스레드가 어느 코어에서 동작했는가 같은 트레이스를 WPA의 CPU Usage (Precise)로 열어 실행된 논리 프로세서 열을 본다. 논리 프로세서 번호와 P 코어 / E 코어의 대응은 기종에 따라 다르므로, 먼저 Sysinternals의 Coreinfo 등으로 대응표를 만든 뒤 읽는다. 전면일 때와 최소화했을 때로 사용된 번호가 바뀌는지 비교할 수 있다

wpr은 Windows Performance Recorder의 명령어로, Windows ADK에 포함되어 있습니다. 관리자 권한 콘솔에서 실행합니다.

실무에서는 평균 CPU 사용률보다 「마감에 맞췄는가」가 더 중요합니다. 여기가 꽤 본질입니다.

봐야 할 지표는 마감이런 종류의 문제에서는 평균 CPU 사용률보다 주기 처리가 마감에 맞았는가가 더 중요한 지표임을 보여주는 그림.이것만으로는 부족하다이쪽을 본다평균 CPU 사용률안정성 판단마감에 맞췄는가dropout이나 glitch의 횟수로 센다

그림 18: 평균이 낮아도 마감은 놓칠 수 있으므로, 맞았는지를 세어 판단한다.

9. 정리

프로세서 스케줄링백그라운드 서비스로 바꾸면 무슨 일이 일어나는지를 꽤 짧게 다시 말하면 이렇습니다.

  • 바뀌는 것은 CPU의 속도 그 자체가 아니라 foreground와 background 사이의 CPU 시간 배분 방식
  • 프로그램은 전면 앱을 쾌적하게 하기 쉽다
  • 백그라운드 서비스는 뒤의 연속 처리가 밀리기 어려워진다
  • 그래서 음성, 영상, 캡처, 감시, 상주 처리처럼 뒤의 마감이 중요한 경우에는 효과가 있을 수 있다
  • 다만 P 코어 / E 코어 CPU에서는 실제의 core 배치가 QoS, power policy, hybrid scheduling, Thread Director 등도 강하게 작용한다
  • 그래서 요즘의 Windows에서는 이 설정을 효과가 있을 때는 있지만 단독의 주역은 아니다라고 보는 것이 자연스럽다

요컨대 이것은 CPU의 마력을 올리는 손잡이가 아니라 일의 할당을 바꾸는 손잡이입니다.

전면 앱의 경쾌함을 우선할지, 뒤의 연속 처리의 마감을 지키기 쉽게 할지. 그 균형을 조금 background 쪽으로 기울이는 설정이라고 생각하면 꽤 납득이 갑니다.

그리고 hybrid CPU 시대에는 그 위에 다시 QoS와 P / E 코어 선택의 층이 얹혀 있습니다. 여기까지 포함해서 보면 「왜 효과가 있을 때가 있는가」, 「왜 효과가 없을 때도 있는가」가 보이기 시작합니다.

이 손잡이의 현대에서의 위치이 설정은 일의 할당을 background 쪽으로 조금 기울이는 손잡이이며, hybrid CPU 시대에는 그 위에 QoS와 P 코어/E 코어 선택의 층이 얹혀 있기 때문에 효과가 있을 때는 있지만 단독의 주역은 아님을 보여주는 그림.그 위에 얹힌다할당을 background 쪽으로 기울이는 손잡이quantum과 우대의 층QoS와 P / E 코어 선택의 층효과가 있는 이유도 없는 이유도 보이기 시작한다

그림 19: 이 손잡이는 아래층에 작용할 뿐이고, 현대의 코어 선택은 그 위층이 정한다.

10. 참고 자료

같은 태그를 공유하는 최신 기사입니다. 더 가까운 주제로 지식을 넓힐 수 있습니다.

이 기사와 가까운 토픽 페이지입니다. 기사를 출발점 삼아 관련 서비스와 다른 기사로 이어집니다.

이 기사는 다음 서비스 페이지로 이어집니다. 가까운 입구부터 확인해 주세요.

자주 묻는 질문

이 기사 주제에 대해 상담 시 자주 나오는 질문을 모았습니다.

「프로세서 스케줄링」을 「백그라운드 서비스」로 바꾸면 무엇이 바뀌나요?
바뀌는 것은 CPU의 속도나 클럭이 아니라 전면 앱과 배후에서 도는 처리 사이의 CPU 시간 배분 방식입니다. 내부적으로는 Win32PrioritySeparation과 연결된 설정으로, quantum(타임 슬라이스)의 배분 방식과 foreground의 우대 정도에 작용합니다. 「프로그램」은 전면 앱을 우대하기 쉽고, 「백그라운드 서비스」는 전면과 배후를 더 균등하게 다루는 방향입니다. 참고로 이 설정을 골라도 자신의 앱이 Windows 서비스가 되는 것은 아닙니다.
「백그라운드 서비스」로 하면 소리의 지직거림이 고쳐지는 경우가 있는 이유는 무엇인가요?
음성 처리는 평균적으로 빠른 것만으로는 부족하고, 수 밀리초마다의 마감까지 버퍼를 채워야 하기 때문입니다. 「프로그램」 설정에서는 전면 앱 쪽이 길게 달리기 쉬워, 뒤의 음성 처리가 평균으로는 문제없어도 그 순간만 늦어져 underrun이 되는 경우가 있습니다. 「백그라운드 서비스」로 돌리면 뒤의 연속 처리가 CPU를 되찾기 쉬워져 deadline miss가 줄어드는 경우가 있습니다. 다만 DPC/ISR 지연, USB 절전, 드라이버 불량, thermal throttling, EcoQoS에서 비롯된 문제는 이 설정으로는 고쳐지지 않습니다.
「백그라운드 서비스」로 하면 배경 처리가 P 코어에서 동작하게 되나요?
그렇게 되지 않습니다. P 코어와 E 코어 중 어느 쪽에 올라가는가는 이 설정보다 QoS, 전원 정책, hybrid scheduling, Intel Thread Director 같은 것들이 더 강하게 작용합니다. Windows 11에서는 앱을 최소화한 것만으로 QoS가 내려가, 배터리 구동 시에는 efficient core 쪽에 놓이기 쉬워지는 일도 평범하게 일어납니다. 최소화에서만 느려지거나 배터리에서만 나빠지는 경우라면, 이 설정보다 QoS나 power 쪽을 의심하는 편이 맞을 확률이 높습니다.
음이 끊기거나 드롭아웃이 일어나는 원인은 어떻게 구분하면 되나요?
먼저 AC 급전인지, 전원 모드, 버퍼 사이즈, 전면·최소화 상태 같은 조건을 고정하고, 「프로그램」과 「백그라운드 서비스」를 같은 조건에서 비교해 dropout 횟수나 처리 지연을 기록합니다. Windows 11의 hybrid CPU라면 최소화나 배터리에서만 악화되는지를 보고 QoS 쪽을 의심합니다. 음성이나 영상이라면 중요 스레드가 MMCSS를 쓸 수 있는지를 먼저 확인하고, 그래도 고쳐지지 않으면 DPC/ISR·USB·드라이버를 파고듭니다. 여기까지 오면 스케줄러 이전의 이야기가 됩니다.

저자 프로필

기사 저자의 프로필 페이지입니다.

Go Komura

합동회사 코무라소프트 대표

Windows 소프트웨어 개발, 기술 상담, 장애 조사를 중심으로 재현이 어려운 장애 조사와 기존 자산이 남아 있는 프로젝트에 강점이 있습니다.

블로그 목록으로 돌아가기