description/scheduler: update uclamp for schedutil

This commit is contained in:
Cheng Jian
2024-07-24 19:32:40 +08:00
parent a80f34b248
commit 65e8689021
4 changed files with 16 additions and 4 deletions
File diff suppressed because one or more lines are too long
+7
View File
@@ -883,6 +883,13 @@ Intel 编译器随后也切到 LLVM 框架, 参见 [Intel Fully Embracing LLVM F
## 13.15 Package BUILD
-------
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|:---:|:----:|:---:|:----:|:---------:|:----:|
| 2024/07/20 | Thomas Weißschuh <linux@weissschuh.net> | [kbuild: add script and target to generate pacman package](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=c8578539debaedfbb4671e1954be8ebbd1307c6f) | 旨在在 Linux 内核构建过程中添加生成 Arch Linux 及其衍生系统所使用的 pacman 包的目标和脚本. [Upstream Linux 6.11 Makes It Easy To Build A Pacman Kernel Package For Arch Linux](https://www.phoronix.com/news/Linux-6.11-Pacman-Arch-Linux). | v7 ☐☑✓ v6.11-rc1 | [LORE](https://lore.kernel.org/all/20240720-kbuild-pacman-pkg-v7-1-74a79b4401d2@weissschuh.net) |
# 14 FTRACE
-------
+3 -1
View File
@@ -5495,9 +5495,11 @@ schedtune 与 uclamp 都是由 ARM 公司的 Patrick Bellasi 主导开发.
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|:-----:|:----:|:----:|:----:|:------------:|:----:|
| 2019/06/21 | Patrick Bellasi <patrick.bellasi@arm.com> | [Add utilization clamping support](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=af24bde8df2029f067dc46aff0393c8f18ff6e2f) | TASK util clamp(Android schedtune 的主线替代方案, 只合入了前 11 个补丁. | v10 ☑✓ 5.3-rc1 | [LORE v10,0/16](https://lore.kernel.org/all/20190621084217.8167-1-patrick.bellasi@arm.com) |
| 2019/06/21 | Patrick Bellasi <patrick.bellasi@arm.com> | [Add utilization clamping support](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=af24bde8df2029f067dc46aff0393c8f18ff6e2f) | TASK util clamp(Android schedtune 的主线替代方案, 只合入了前 11 个补丁. 实现任务的 UCLAMP, 每次进程出入队的时候, 会通过 uclamp_rq_inc_id()/uclamp_rq_dec_id() 更新 RQ 的 UCLAMP MIN/MAX. | v10 ☑✓ 5.3-rc1 | [LORE v10,0/16](https://lore.kernel.org/all/20190621084217.8167-1-patrick.bellasi@arm.com) |
| 2019/08/22 | Patrick Bellasi <patrick.bellasi@arm.com> | [Add utilization clamping support (CGroups API)](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=0413d7f33e60751570fd6c179546bde2f7d82dcb) | TASK util clamp(Android schedtune 的主线替代方案) | v14 ☑✓ 5.4-rc1 | [LORE v14,0/6](https://lore.kernel.org/all/20190822132811.31294-1-patrick.bellasi@arm.com) |
| 2024/02/01 | Hongyan Xia <hongyan.xia2@arm.com> | [uclamp sum aggregation](https://lore.kernel.org/all/cover.1706792708.git.hongyan.xia2@arm.com) | 本系列通过跟踪任务和 cfs_rq 中的 util_ag_uclip 信号来解决 UCLAMP 的一系列问题. 在任务级别, p->se.avg.util_ag_uclip 基本上是跟踪正常的 util_avg, 但在其 uclamp 最小值和最大值内被箝住. rq->cfs.avg.util_avg_uclamp 是所有钳制值的总和, 这暗示了该 rq 应该运行的频率和利用率. 该建议与虚拟机工作负载的 util_cuest 系列有一些相似之处, 因为它为请求它的任务带来了所需的性能, 而不是为任务份额不可预测的 rq 带来了所期望的性能. 当然这同样会改变 UCLAMP 的预期行为. | v2 ☐☑✓ | [LORE v2,0/7](https://lore.kernel.org/all/cover.1706792708.git.hongyan.xia2@arm.com) |
| 2023/11/22 | Vincent Guittot <vincent.guittot@linaro.org> | [Rework interface between scheduler and schedutil governor](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=f12560779f9d734446508f3df17f5632e9aaa2c8) | 这个补丁集的目标是重新设计 Linux 内核中调度器 (scheduler) 与 schedutil 频率调节器 (governor) 之间的接口, 以提供更多的信息给后者, 从而让频率调节更加精确和高效. 在新的设计中, 调度器 (特别是 EAS) 不再需要猜测 governor 想要应用的余量 (headroom), 而是直接请求目标频率. 同时, governor 直接接收实际的利用率和新的最小、最大边界值, 以此选择目标频率, 不再需要处理调度器内部的细节, 包括了两个修改:<br>1. 在估计目标频率时考虑 ulamp 提示, 重新设计调度程序和 schedutil 治理器之间的接口 effective_cpu_util(), 以便将所有信息传递给 cpufreq schedutil. 使它能够根据实际的 CPU 利用率和 UCLAMP 边界 MIN/MAX 来选择目标频率, 而不是依赖调度器的利用率信号和 uclamp 性能提示的混合计算, 这种方法可能会导致信息丢失和不准确的假设.<br>2. I/O 等待提升的重构: 补丁改变了 iowait boost 的处理方式, 使其不再依赖于 uclamp_rq_util_with() 函数, 该函数原本用于将 I/O 等待提升限制在 uclamp(用户级 CPU 限制)范围之内. 取而代之的是, 补丁使用了在 sugov_get_util() 函数中已经计算出的 max 值来上限 iowait boost. | v4 ☐☑✓ v6.8-rc1 | [LORE v4,0/2](https://lore.kernel.org/all/20231122133904.446032-1-vincent.guittot@linaro.org) |
| 2021/12/16 | Qais Yousef <qais.yousef@arm.com> | [uclamp_max vs schedutil fixes](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=d37aee9018e68b0d356195caefbb651910e0bbfa) | 解决 uclamp_max 与 schedutil 交互问题的两个补丁, 在使用 `sugov_update_single_{freq, perf}()` 的系统上, uclamp_max 功能由于 busy 过滤器的存在而变得无效. 该过滤器会在没有空闲时间的情况下忽略频率改变的请求, 而这在使用 uclamp 的系统上并不成立. 同样地, 被 uclamp_max 限制的 I/O 密集型任务仍能获得更高的频率, 因为 sugov_iowait_apply() 不会使用 uclamp_rq_util_with() 来钳制提升.<br>Yousef 提出的两个补丁解决了上述两个问题: <br>第一个补丁是关于在 uclamp 正在使用时忽略 “忙碌” 过滤器, 确保即使在系统繁忙时也能响应频率调整的请求.<br>第二个补丁修复了 I/O 等待提升逃逸 uclamp 限制的问题, 确保被 uclamp_max 约束的任务不会因 I/O 等待提升而获得超出限制的频率. | v1 ☐☑✓ v5.18-rc1 | [LORE v1,0/2](https://lore.kernel.org/all/20211216225320.2957053-1-qais.yousef@arm.com) |
+4 -2
View File
@@ -753,5 +753,7 @@ HUAWEI P10 Plus, Vicky, Android 7.0, EMUI 5.1
[New Power Sequencing Driver Subsystem Merged For Linux 6.11](https://www.phoronix.com/news/Linux-6.11-Power-Sequencing)
Silva 提出了一系列旨在提高灵活数组使用安全性的措施, 包括:<br>引入 `__counted_by` 宏来注解结构体中的变长数组, 以帮助编译器进行边界检查.<br>
提升编译器警告级别, 以捕捉零长度数组的使用, 尤其是那些可能被误解为灵活数组的情况.<br>集成测试到自动测试机器人中, 以捕获对类型转换的不当使用, 类似于在 atomic_t 转换为 recount_t 时所做的.