# 스케줄러 구성

Qualcomm Linux 커널은 표준 Linux 스케줄러 솔루션을 지원합니다. 이 커널은 스케줄러를 사용하여 CPU 에너지 소비량에 따라 작업 배치에 적합한 CPU를 선택합니다.

스케줄러는 프로세스를 실행해야 하는 순서를 결정합니다. 스케줄러는 각 CPU의 runqueue에서 프로세스를 실행합니다.

커널 기준은 표준 Linux 스케줄러 솔루션을 지원합니다. 이 커널은 [Energy Aware Scheduling (EAS)](https://www.kernel.org/doc/html/next/scheduler/sched-energy.html) 을 사용하여 CPU 에너지 소비량에 따라 작업 배치에 적합한 CPU를 선택합니다.

EAS는 완전 공정 스케줄러(CFS) 작업 절전 모드 해제 밸런싱 코드를 재정의합니다. 이는 CPU의 에너지 모델(EM) 및 엔터티별 로드 추적(PELT) 신호를 사용하여 비대칭적 CPU 토폴로지가 포함된 시스템에서 절전 해제 밸런싱을 수행하는 동안 에너지 효율적인 타겟 CPU를 선택하는 방식을 사용합니다.

기본적인 스케줄러 문서는 [Scheduler](https://www.kernel.org/doc/html/next/scheduler/index.html) 를 참조하세요.

## CPU 토폴로지 및 EAS 이해

Qualcomm SoC는 EAS에서 사용되는 CPU 용량 지표의 관점과 차별화된 이종 CPU 토폴로지를 갖고 있습니다.

EAS는 다양한 컴퓨팅 능력을 가진 CPU를 구별하기 위해 *용량* 개념을 사용합니다. CPU의 용량은 시스템에서 가장 성능이 높은 CPU와 비교했을 때 최고 주파수에서 실행 시 완료하는 작업의 양을 나타냅니다. 용량 값은 1024 범위에서 일반화됩니다(가장 성능이 강력한 CPU/클러스터는 1024로 구성됨).

EAS는 CPU 노드에서 지정된 DMIPS(Dhrystone million instructions per second, Dhrystone 초당 백만 명령어 수) 값과 클러스터가 지원하는 최대 주파수를 기준으로 클러스터의 용량을 빌드합니다.

다음은 CPU 토폴로지 및 용량에 대한 `sysfs` 노드입니다.

> 
> 
> 표: CPU 토폴로지 및 용량
> 
> 
> | 명령어 | 목적 |
> | --- | --- |
> | cat /sys/devices/system/cpu/cpu*/cpu_capacity<br>    Copy to clipboard | 시스템의 각 CPU에 연결된 용량을 확인하기 위해 사용합니다. |
> | cat /sys/devices/system/cpu/cpufreq/policy*/related_cpus<br>    Copy to clipboard | 시스템의 각 클러스터와 연결된 CPU의 목록을 확인하기 위해 사용합니다. |

스케줄러가 CPU 용량을 사용하는 방식에 대한 자세한 내용은 [Capacity Aware Scheduling](https://www.kernel.org/doc/html/next/scheduler/sched-capacity.html) 을 참조하세요.

## 기본 CPU 주파수 관리자 변경

CPU 주파수 관리자를 런타임 시 변경하거나 빌드 컴파일 도중 정적으로 설정할 수 있습니다.

1. Kconfig 구성 옵션: CPU 주파수 관리자를 설정하려면 커널 defconfiguration 구성 파일에서 해당 드라이버를 활성화하세요.

    `PERFORMANCE` 관리자를 기본 CPU 주파수 관리자로 설정하려면 defconfiguration 파일에서 `CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y` 를 설정합니다.
2. 커널 명령줄 옵션: 커널 구성 옵션을 재정의하려면 `meta-qcom-hwe/conf/machine/include/qcom-<SoC>.inc` 파일의 커널 명령줄에 `cpufreq.default_governor=performance` 매개변수를 추가하여 적절한 CPU 주파수 관리자를 설정하세요.

## 엔터티별 로드 추적 구성

PELT(Per Entity Load Tracking, 엔터티별 로드 추적)는 `sched_entities/groups/runqueues` 를 차지하는 로드를 추적하는 데 사용되는 메커니즘입니다.

PELT 클럭 승수는 전력 및 성능 요구사항을 충족하도록 조정됩니다.

명령줄 매개변수 `sched_pelt_multiplier` 를 사용하면 클럭 승수를 설정할 수 있습니다. 클럭 승수는 전력 및 성능을 위해 PELT 램프 업/다운 속도를 조정합니다.

반감기가 낮을수록 작업의 CPU 사용률은 더 빠르게 상승합니다. 작업은 성능 CPU에 할당되며, 따라서 높은 전력 소비량과 성능 향상으로 이어집니다. 더 짧은 시간 내에 더 높은 CPU 주파수를 선택하느라 CPU 사용률도 상승합니다.

참고

반감기는 작업 사용률의 램프 다운 방식에도 영향을 미칩니다. UTIL EST 기능을 사용하면 램프 다운 속도가 더 빨라집니다.

### PELT 승수

Linux 커널에서 PELT 반감기 승수는 시스템이 변화하는 워크로드에 적응하는 방식에 영향을 미치며, 이전 사용률 데이터를 토대로 CPU 주파수를 조정합니다. 이는 PELT 클럭을 가속시키고 반감기를 줄여 시스템 응답 속도를 높이는 구성입니다.

커널 명령줄 인자를 통해 PELT 승수를 구성합니다.

`kernel.sched_pelt_multiplier=[1, 2, 4] Default value: 1 (half life 32 msec), 2 (half life 16msec), 4(half life 8 msec)]`

PELT에 대한 자세한 내용은 [Per-entity load tracking](https://lwn.net/Articles/531853/) 을 참조하세요.

## SchedUtil 관리자 구성

SchedUtil CPU 주파수 관리자는 Qualcomm Linux 커널의 기본 관리자입니다. SchedUtil은 CPU 사용률에 따라 최적의 작동 지점(OPP)을 예측하며, 주파수 요청과 에너지 예측 간의 일관성을 유지합니다.

SchedUtil CPU 주파수 관리자는 EAS와 연결되어 있으며, 모든 CPU가 다음에 실행될 OPP를 예측하여 에너지 소비량을 추정하도록 시도합니다.

자세한 내용은 [SchedUtil](https://www.kernel.org/doc/html/next/scheduler/schedutil.html) 을 참조하세요.

## 사용률 제한(UCLAMP) 구성

사용률 제한은 사용자 공간에서 작업의 성능 요구사항을 관리할 수 있도록 허용하는 스케줄러 기능입니다.

제한을 수행하려면 다음과 같은 매개변수를 구성하세요.

- `UCLAMP_MIN`: `> 0` 인 값으로 설정되어 있다면 작업 수요는 항상 이 값보다 크거나 같습니다. 실제 작업 수요가 이 값보다 크면 실제 수요 신호가 사용되지만, 실제 작업 수요가 이 값보다 낮으면 `UCLAMP_MIN` 이 작업 수요로 보고됩니다.
- `UCLAMP_MAX`: `> 0` 인 값으로 설정되어 있다면 작업 수요는 항상 이 값보다 작거나 같습니다. 실제 작업 수요가 이 값보다 작으면 실제 수요 신호가 사용되지만, 실제 작업 수요가 이 값보다 높으면 `UCLAMP_MAX` 가 작업 수요로 보고됩니다.

참고

`UCLAMP_MAX > UCLAMP_MIN`

UCLAMP를 사용하여 스케줄러의 작업 배치 결정에 영향을 줄 수 있습니다.

이종 시스템에서는 스케줄러가 작업 수요 또는 사용률 신호(PELT 신호)를 사용하여 작업을 소규모 또는 대규모로 분류합니다. 작업 분류의 입력을 기준으로, 스케줄러는 전력 소비량에 영향을 미칠 가능성이 있는 작업 배치를 대상으로 작은(더 적은 컴퓨팅 능력) 또는 많은(더 많은 컴퓨팅 능력) CPU 코어를 선택합니다.

예를 들어 중요하지 않은(사소한/백그라운드/유지보수) 작업을 낮은 값(`lower UCLAMP_MAX`)으로 제한하여 스케줄러가 작업을 작은 클러스터에 배치하도록 유도합니다. 마찬가지로, 중요한/포그라운드/활성 작업을 더 높은 값(`higher UCLAMP_MIN`)으로 제한하여 스케줄러가 작업을 큰 클러스터에 배치하도록 유도합니다.

UCLAMP를 사용하면 스케줄러가 주파수 안내도 제어할 수 있습니다.

작업의 빠른 주파수 램프를 충족하려면 작업을 더 높은 수요(`UCLAMP_MIN`) 값으로 제한하세요. 높은 제한은 클러스터의 주파수를 램프 업하여 작업의 성능 요구사항을 충족하는 데 도움이 됩니다.

UCLAMP 작업을 사용하면 사용자 공간에서 작업/작업 그룹의 성능 관리를 수행할 수 있습니다.

UCLAMP를 사용하면 작업 또는 작업 그룹을 배치할 있으며 성능 힌트나 제약 조건이 허용됩니다. 이 메커니즘은 스케줄러 배치 결정에 영향을 미치거나, 클러스터의 주파수 안내에 영향을 미치는 데 사용됩니다.

자세한 내용은 [UCLAMP](https://www.kernel.org/doc/html/next/scheduler/sched-util-clamp.html) 를 참조하세요. 인터페이스와 구성에 대한 자세한 내용은 [Utilization Clamping](https://www.kernel.org/doc/html/v6.6/scheduler/sched-util-clamp.html) 을 참조하세요.

Last Published: Jan 01, 2026

[Previous Topic
메모리 구성 및 관리](https://docs.qualcomm.com/bundle/publicresource/80-70020-3KO/topics/memory.md) [Next Topic
동적 전압 및 주파수 스케일링(DVFS) 관리자 구성](https://docs.qualcomm.com/bundle/publicresource/80-70020-3KO/topics/dynamic-clock-and-voltage-scaling-dcvs.md)