# Đặt cấu hình trình lập lịch

Qualcomm Linux kernel hỗ trợ giải pháp lập lịch Linux chuẩn. Kernel sử dụng trình lập lịch để chọn CPU phù hợp cho việc sắp xếp tác vụ dựa trên mức tiêu thụ năng lượng của CPU.

Trình lập lịch quyết định thứ tự các tiến trình phải chạy. Trình lập lịch chạy các tiến trình từ hàng đợi chạy(runqueue) của mỗi CPU.

Kernel gốc hỗ trợ giải pháp lập lịch Linux chuẩn. Kernel sử dụng [Energy Aware Scheduling (EAS)](https://www.kernel.org/doc/html/next/scheduler/sched-energy.html) để chọn CPU phù hợp cho việc sắp xếp tác vụ dựa trên mức tiêu thụ năng lượng của CPU.

EAS ghi đè mã cân bằng đánh thức tác vụ của bộ lập lịch Completely Fair Scheduler (CFS). Nó sử dụng model năng lượng (EM) của CPU và tín hiệu theo dõi tải cho từng thực thể (PELT) để chọn CPU mục tiêu tiết kiệm năng lượng trong quá trình cân bằng đánh thức,  trong một hệ thống có cấu trúc CPU bất đối xứng.

Để biết tài liệu cơ bản về trình lập lịch, hãy xem [Scheduler](https://www.kernel.org/doc/html/next/scheduler/index.html).

## Hiểu về cấu trúc CPU và EAS

Các Qualcomm SoC có cấu trúc CPU không đồng nhất được phân biệt theo chỉ số về năng lượng CPU được dùng trong EAS.

EAS sử dụng khái niệm *năng lực* để phân biệt các CPU có khả năng tính toán khác nhau. Năng lực của CPU thể hiện lượng công việc mà CPU hoàn thành khi chạy ở tần số cao nhất so với CPU mạnh nhất của hệ thống. Giá trị năng lực được chuẩn hóa trong phạm vi 1024 (CPU/cụm mạnh nhất được đặt cấu hình ở mức 1024).

EAS xây dựng năng lực của một cụm CPU dựa trên giá trị Dhrystone DMIPS (triệu lệnh mỗi giây) được xác định trong node CPU và tần số tối đa mà cụm đó hỗ trợ.

Sau đây là các node `sysfs` cho cấu trúc và năng lực CPU:

> 
> 
> Bảng: Cấu trúc và năng lực CPU
> 
> 
> | Lệnh | Mục đích |
> | --- | --- |
> | cat /sys/devices/system/cpu/cpu*/cpu_capacity<br>    Copy to clipboard | Để có được năng lực liên quan đến từng CPU trong hệ thống. |
> | cat /sys/devices/system/cpu/cpufreq/policy*/related_cpus<br>    Copy to clipboard | Để có danh sách các CPU được liên kết với từng cụm trong hệ thống. |

Để biết thêm thông tin về cách trình lập lịch sử dụng năng lực CPU, hãy xem [Capacity Aware Scheduling](https://www.kernel.org/doc/html/next/scheduler/sched-capacity.html).

## Thay đổi bộ điều chỉnh tần số CPU mặc định

Bộ điều chỉnh tần số CPU có thể được thay đổi runtime hoặc được thiết lập tĩnh trong quá trình biên dịch.

1. Tùy chọn cấu hình Kconfig: Để đặt bộ điều chỉnh tần số CPU, hãy bật driver tương ứng trong tệp defconfiguration kernel.

    Để đặt bộ điều chỉnh `PERFORMANCE` làm bộ điều chỉnh tần số CPU mặc định, hãy đặt `CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y` trong tệp defconfirguration.
2. Tùy chọn dòng lệnh kernel: Để ghi đè tùy chọn cấu hình kernel, hãy thêm tham số `cpufreq.default_governor=performance` vào dòng lệnh kernel trong tệp `meta-qcom-hwe/conf/machine/include/qcom-<SoC>.inc` để đặt bộ điều chỉnh tần số CPU phù hợp.

## Đặt cấu hình theo dõi tải cho từng thực thể

Theo dõi tải cho từng thực thể (PELT) là cơ chế được dùng để theo dõi việc tính toán tải cho `sched_entities/groups/runqueues`.

Hệ số xung nhịp PELT được điều chỉnh để đáp ứng các yêu cầu về năng lượng và hiệu năng.

Tham số dòng lệnh `sched_pelt_multiplier` cho phép bạn đặt hệ số xung nhịp. Hệ số xung nhịp điều chỉnh tốc độ tăng/giảm của PELT để điều chỉnh công suất và hiệu năng  của hệ thống.

Với thời gian half-life thấp hơn, mức sử dụng CPU cho các tác vụ được tích lũy nhanh hơn. Các tác vụ được đặt lên các CPU hiệu năng cao, từ đó mang lại hiệu năng tốt hơn nhưng mức tiêu thụ điện năng cao hơn. Mức sử dụng CPU cũng được tích lũy để giúp chọn tần số CPU cao hơn trong thời gian ngắn hơn.

Ghi chú

Thời gian half-life cũng ảnh hưởng đến tốc độ giảm dần của việc sử dụng tác vụ. Tính năng UTIL EST giúp tăng tốc độ giảm dần.

### Hệ số PELT

Trong Linux kernel, hệ số half-life PELT ảnh hưởng đến cách hệ thống thích ứng với khối lượng công việc thay đổi và điều chỉnh tần số CPU dựa trên dữ liệu sử dụng trong quá khứ. Đây là cấu hình giúp tăng tốc xung nhịp PELT và giảm thời gian half-life, từ đó giúp hệ thống phản ứng nhanh hơn.

Đặt cấu hình hệ số PELT thông qua đối số dòng lệnh kernel:

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

Để biết thêm thông tin về PELT, hãy xem [Per-entity load tracking](https://lwn.net/Articles/531853/).

## Đặt cấu hình bộ điều chỉnh SchedUtil

Bộ điều chỉnh tần số CPU SchedUtil là bộ điều chỉnh mặc định trong Qualcomm Linux kernel. SchedUtil dự đoán các điểm hoạt động tối ưu (OPP) dựa trên mức sử dụng CPU, duy trì tính nhất quán giữa các yêu cầu tần số và dự đoán năng lượng.

Bộ điều chỉnh tần số CPU SchedUtil được liên kết với EAS và cố gắng dự đoán OPP mà tất cả CPU chạy tiếp theo để ước tính mức tiêu thụ năng lượng của chúng.

Để biết thêm thông tin, hãy xem [SchedUtil](https://www.kernel.org/doc/html/next/scheduler/schedutil.html).

## Đặt cấu hình utilization clamping (UCLAMP)

Utilization clamping là tính năng của trình lập lịch cho phép người dùng quản lý các yêu cầu về hiệu năng của tác vụ.

Để thực hiện clamping, hãy đặt cấu hình các tham số sau:

- `UCLAMP_MIN`: Nếu được đặt thành bất kỳ giá trị nào `> 0`, thì nhu cầu tác vụ luôn lớn hơn hoặc bằng giá trị này. Nếu nhu cầu tác vụ thực tế lớn hơn giá trị này, thì tín hiệu về nhu cầu thực tế sẽ được sử dụng, nhưng nếu nhu cầu tác vụ thực tế thấp hơn giá trị này, thì `UCLAMP_MIN` sẽ được báo cáo là nhu cầu tác vụ.
- `UCLAMP_MAX`: Nếu được đặt thành bất kỳ giá trị nào `> 0`, thì nhu cầu tác vụ luôn nhỏ hơn hoặc bằng giá trị này. Nếu nhu cầu tác vụ thực tế nhỏ hơn giá trị này, thì tín hiệu nhu cầu thực tế sẽ được sử dụng, nhưng nếu nhu cầu tác vụ thực tế lớn hơn giá trị này, thì `UCLAMP_MAX` sẽ được báo cáo là nhu cầu tác vụ.

Ghi chú

`UCLAMP_MAX > UCLAMP_MIN`

Sử dụng UCLAMP để tác động đến quyết định sắp xếp tác vụ của trình lập lịch.

Trên một hệ thống không đồng nhất, trình lập lịch sử dụng tín hiệu nhu cầu hoặc sử dụng tác vụ (tín hiệu PELT) để phân loại tác vụ là nhỏ hay lớn. Dựa trên thông tin đầu vào từ quá trình phân loại tác vụ, trình lập lịch sẽ chọn lõi CPU nhỏ (công suất tính toán thấp hơn) hoặc lớn (công suất tính toán cao hơn) để sắp xếp tác vụ với khả năng tác động đến mức tiêu thụ điện năng.

Ví dụ: clamp các tác vụ không quan trọng (trivial/background/housekeeping) vào giá trị thấp hơn (`low UCLAMP_MAX`) để tác động đến trình lập lịch nhằm sắp xếp các tác vụ vào cụm nhỏ. Tương tự, hãy clamp các tác vụ quan trọng/nền trước/đang hoạt động ở giá trị cao hơn (`UCLAMP_MIN cao hơn`) để tác động đến trình lập lịch nhằm sắp xếp các tác vụ vào cụm lớn.

UCLAMP cũng cho phép trình lập lịch điều khiển hướng dẫn tần số.

Để đáp ứng tốc độ tăng tần số nhanh cho một tác vụ, hãy clamp tác vụ đó ở giá trị nhu cầu cao hơn (`UCLAMP_MIN`). Clamp ở giá trị cao hơn giúp tăng tần số của cụm CPU nhằm đáp ứng các yêu cầu về hiệu năng của tác vụ.

Hoạt động UCLAMP cho phép quản lý hiệu năng của các tác vụ/nhóm tác vụ từ không gian người dùng.

UCLAMP cho phép sắp xếp các tác vụ hoặc nhóm tác vụ và cung cấp gợi ý hoặc ràng buộc về hiệu năng. Cơ chế này được dùng để tác động đến quyết định sắp xếp của trình lập lịch hoặc tác động đến hướng dẫn tần số của CPU.

Để biết thêm thông tin, hãy xem [UCLAMP](https://www.kernel.org/doc/html/next/scheduler/sched-util-clamp.html). Để biết thêm thông tin về giao diện và cấu hình, hãy xem [Utilization Clamping](https://www.kernel.org/doc/html/v6.6/scheduler/sched-util-clamp.html).

Last Published: Jan 01, 2026

[Previous Topic
Đặt cấu hình và quản lý bộ nhớ](https://docs.qualcomm.com/bundle/publicresource/80-70020-3VI/topics/memory.md) [Next Topic
Đặt cấu hình bộ điều chỉnh điện áp và tần số động (DVFS)](https://docs.qualcomm.com/bundle/publicresource/80-70020-3VI/topics/dynamic-clock-and-voltage-scaling-dcvs.md)