멀티미디어 클래스 스케줄러 서비스
MMCSS(멀티미디어 클래스 스케줄러 서비스)를 사용하면 멀티미디어 애플리케이션이 시간에 민감한 처리에서 CPU 리소스에 대한 우선 순위가 지정된 액세스를 받도록 할 수 있습니다. 이 서비스를 사용하면 우선 순위가 낮은 애플리케이션에 대한 CPU 리소스를 거부하지 않고도 멀티미디어 애플리케이션에서 최대한 많은 CPU를 활용할 수 있습니다.
MMCSS는 레지스트리에 저장된 정보를 사용하여 지원되는 작업을 식별하고 이러한 작업을 수행하는 스레드의 상대적 우선 순위를 결정합니다. 특정 작업과 관련된 작업을 수행하는 각 스레드는 AvSetMmMaxThreadCharacteristics 또는 AvSetMmThreadCharacteristics 함수를 호출하여 MMCSS에 해당 작업에서 작업 중임을 알릴 수 있습니다.
MMCSS를 사용하는 프로그램의 예는 배타적 모드 스트림을 참조하세요.
Windows Server 2003 및 Windows XP: MMCSS를 사용할 수 없습니다.
레지스트리 설정
MMCSS 설정은 다음 레지스트리 키에 저장됩니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile
이 키에는 우선 순위가 낮은 작업에 보장되어야 하는 CPU 리소스의 비율을 결정하는 SystemResponsiveness라는 REG_DWORD 값이 포함되어 있습니다. 예를 들어 이 값이 20이면 CPU 리소스의 20%가 우선 순위가 낮은 작업을 위해 예약됩니다. 10으로 균등하게 나눌 수 없는 값은 10의 가장 가까운 배수로 반올림됩니다. 값 0도 10으로 처리됩니다.
키에는 작업 목록이 포함된 Tasks 라는 하위 키도 포함되어 있습니다. 기본적으로 Windows는 다음 작업을 지원합니다.
- 오디오
- 캡처
- 배포
- 게임
- 재생
- Pro 오디오
- 창 관리자
OEM은 필요에 따라 추가 작업을 추가할 수 있습니다.
각 작업 키에는 태스크와 연결된 스레드에 적용할 특성을 나타내는 다음 값 집합이 포함되어 있습니다.
값 | 형식 | 가능한 값 |
---|---|---|
선호도 | REG_DWORD | 프로세서 선호도를 나타내는 비트 마스크입니다. 0x00 및 0xFFFFFFFF 모두 프로세서 선호도가 사용되지 않음을 나타냅니다. |
백그라운드 전용 | REG_SZ | 이 작업이 백그라운드 작업인지 여부를 나타냅니다(사용자 인터페이스 없음). 창 포커스가 변경되어 백그라운드 작업의 스레드가 변경되지 않습니다. 이 값은 True 또는 False로 설정할 수 있습니다. |
BackgroundPriority | REG_DWORD | 백그라운드 우선 순위입니다. 값의 범위는 1-8입니다. |
클록 속도 | REG_DWORD | MMCSS에서 프로세서 리소스 예약의 세분성을 결정하는 데 사용하는 힌트입니다. Windows Server 2008 및 Windows Vista: 스레드가 이 작업에 조인하는 경우 시스템에서 사용하는 최대 보장 클록 속도(100나노초 간격)입니다. Windows 7 및 Windows Server 2008 R2부터 시스템 전원 소비를 줄이기 위해 이 보장이 제거되었습니다. |
GPU 우선 순위 | REG_DWORD | GPU 우선 순위입니다. 값의 범위는 0-31입니다. 이 우선 순위는 아직 사용되지 않습니다. |
우선 순위 | REG_DWORD | 작업 우선 순위입니다. 값의 범위는 1(낮음)에서 8(높음)입니다. 일정 범주 가 높은 작업의 경우 이 값은 항상 2로 처리됩니다. |
일정 범주 | REG_SZ | 예약 범주입니다. 이 값은 높음, 중간 또는 낮음으로 설정할 수 있습니다. |
SFIO 우선 순위 | REG_SZ | 예약된 I/O 우선 순위입니다. 이 값은 유휴, 낮음, 보통 또는 높음으로 설정할 수 있습니다. 이 값은 사용되지 않습니다. |
참고
전원을 절약하기 위해 애플리케이션은 절대적으로 필요한 경우가 아니면 시스템 전체 타이머의 해상도를 작은 값으로 설정해서는 안 됩니다. 자세한 내용은 Windows 7 개발자 가이드의 성능을 참조하세요.
스레드 우선 순위
MMCSS는 우선 순위가 높은 멀티미디어 작업에서 작업하는 스레드의 우선 순위를 높입니다.
MMCSS는 다음 요소를 사용하여 스레드의 우선 순위를 결정합니다.
- 작업의 기본 우선 순위입니다.
- AvSetMmThreadPriority 함수의 Priority 매개 변수입니다.
- 애플리케이션이 포그라운드에 있는지 여부입니다.
- 각 범주의 스레드에서 소비되는 CPU 시간입니다.
MMCSS는 예약 범주에 따라 클라이언트 스레드의 우선 순위를 설정합니다.
범주 | 우선 순위 | 설명 |
---|---|---|
높음 | 23-26 | 이러한 스레드는 특정 시스템 수준 작업보다 낮은 스레드 우선 순위로 실행됩니다. 이 범주는 Pro Audio 작업을 위해 설계되었습니다. |
중간 | 16-22 | 이러한 스레드는 포그라운드에 있는 애플리케이션의 일부입니다. |
낮음 | 8-15 | 이 범주에는 나머지 스레드가 포함됩니다. 필요한 경우 CPU 리소스의 최소 비율을 보장합니다. |
1-7 | 이러한 스레드는 CPU 리소스 할당량을 사용했습니다. 우선 순위가 낮은 스레드를 실행할 준비가 되지 않은 경우 계속 실행할 수 있습니다. |