mirror of
https://github.com/gatieme/LDD-LinuxDeviceDrivers.git
synced 2026-08-17 16:52:08 +08:00
docs: update AI study notes and kernel descriptions
This commit is contained in:
+15
-6
File diff suppressed because one or more lines are too long
+155
-76
File diff suppressed because one or more lines are too long
@@ -1460,7 +1460,10 @@ AMD-pstate 驱动程序利用 ITMT 体系结构提供的功能和数据结构,
|
||||
| 2019 | NA | [Make the Most out of Last Level Cache in Intel Processors, EuroSys '19](https://dl.acm.org/doi/10.1145/3302424.3303977) | NA | 在现代(Intel)处理器中, 最后一级缓存(LLC)被划分为多个切片, 并且未记录的哈希算法(又名复杂寻址)在这些切片之间映射内存地址空间的不同部分, 以增加有效内存带宽. 在仔细研究了英特尔的复杂寻址后, 我们引入了一种切片感知内存管理方案, 可以通过 LLC 更快地访问常用数据. 使用我们提出的方案, 我们表明, 对于 100% 和 95% 的 GET 工作负载, 键值存储可以分别将其平均性能提高 ~12.2% 和 ~11.4%. 此外, 我们提出了 CacheDirector, 这是一种网络 I/O 解决方案, 它扩展了直接数据 I/O(DDIO), 并将数据包的标头放置在最接近相关处理核心的 LLC 切片中. 我们将 CacheDirector 作为 DPDK 的扩展实施, 并评估了我们针对网络功能虚拟化(NFV)系统中延迟关键型应用程序提出的解决方案. 评估结果表明, CacheDirector 通过将以 100 Gbps 运行的优化 NFV 服务链的尾部延迟(90-99 个百分位数)减少多达 119 μs(~21.5%) 来加快数据包处理速度. 最后, 分析了切片感知内存管理实现缓存隔离的有效性. |
|
||||
| 2019 | NA | [CoPart: Coordinated Partitioning of Last-Level Cache and Memory Bandwidth for Fairness-Aware Workload Consolidation on Commodity Servers](https://dl.acm.org/doi/10.1145/3302424.3303963) | NA | 工作负载整合是一种广泛使用的技术, 用于最大限度地提高云和数据中心计算中的服务器资源利用率. 最近的商用 CPU 支持最后一级缓存(LLC) 和内存带宽分区功能, 可用于确保整合工作负载的公平性. 虽然先前的工作已经提出了多种资源分区技术, 但表征 LLC 和内存带宽分区对整合工作负载公平性的影响以及研究系统软件支持以协调方式动态控制 LLC 和内存带宽分区仍然没有探索. 为了弥合这一差距, 我们提出了 LLC 和内存带宽分区的深入性能和公平性表征. 在表征结果的指导下, 我们提出了 CoPart, 即 LLC 和内存带宽的协调分区, 用于商用服务器上的公平感知工作负载整合. CoPart 动态分析整合应用程序的特性, 并以协调的方式在应用程序之间分配 LLC 和内存带宽, 以提高整体公平性. 我们的定量评估表明, CoPart 显着提高了整合应用程序的公平性(例如, 公平性平均比将资源平均分配给合并应用程序的资源分配策略高 57.3%), 在各种应用程序和系统配置中稳健地提供了高公平性, 并且产生了较小的性能开销. |
|
||||
|
||||
# 7 GPU
|
||||
# 7 GPU/NPU
|
||||
-------
|
||||
|
||||
## 7.1 GPU
|
||||
-------
|
||||
|
||||
[phoronix, 2024/12/11, How AMD Is Taking Standard C/C++ Code To Run Directly On GPUs](https://www.phoronix.com/news/AMD-Standard-C-Code-GPUs)
|
||||
@@ -1475,6 +1478,14 @@ AMD-pstate 驱动程序利用 ITMT 体系结构提供的功能和数据结构,
|
||||
| 2026/01/04 | HongleiHuang-amd | [New AMD Linux Driver Patches Posted For Batch Userptr Allocation Support](https://www.phoronix.com/news/AMDKFD-Batch-Userptr-Allocation) | AMDKFD 内核计算驱动最近正在开发的一项新功能是支持批处理用户指针"userptr"分配. 有了这个新的用户空间 API, 将可以支持分配多个非连续的 CPU 虚拟地址范围, 这些地址映射到一个连续的 GPU 虚拟地址. 参加 [phoronix, 2026/01/04, New AMD Linux Driver Patches Posted For Batch Userptr Allocation Support](https://www.phoronix.com/news/AMDKFD-Batch-Userptr-Allocation) | NA | [libhsakmt: Add batch userptr range registration API](https://github.com/ROCm/rocm-systems/commit/ac21716e5d6f68ec524e50eeef10d1d6ad7eae86) |
|
||||
|
||||
|
||||
## 7.2 NPU
|
||||
-------
|
||||
|
||||
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|
||||
|:---:|:----:|:---:|:----:|:---------:|:----:|
|
||||
| 2026/04/15 | Lizhi Hou <lizhi.hou@amd.com> | [accel/amdxdna: Add hardware scheduler time quantum support](https://lore.kernel.org/all/20260415171139.904947-1-lizhi.hou@amd.com) | 邮件主题为新增 AMD XDNA 驱动的硬件调度时间片支持. 主要由 Max Zhen 开发, Lizhi Hou 代提交. 该补丁为硬件调度器添加时间片( time quantum) 配置功能, 以提升多上下文并发执行时的公平性. 调度器通过限制每个上下文的执行时间, 防止长时间任务独占设备, 确保其他任务也能及时执行. 默认时间片设为 30 毫秒, 可通过模块参数 `time_quantum_ms` 调整.<br> 补丁修改了多个文件, 新增 `MSG_OP_UPDATE_PROPERTY` 消息操作码及对应处理逻辑, 用于更新上下文执行时间配额. 在驱动初始化时调用 `aie2_update_prop_time_quota() ` 设置默认时间片. 此外, 更新固件特性表以支持该功能.<br> 目标收件人包括 Oded Gabbay、Jorge Hugo 等相关维护者, 抄送 Linux 内核邮件列表. | v2 ☐☑✓ | [2026/04/15, LORE](https://lore.kernel.org/all/20260415171139.904947-1-lizhi.hou@amd.com) |
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
* 本作品 / 博文 ([AderStep - 紫夜阑珊 - 青伶巷草 Copyright ©2013-2017](http://blog.csdn.net/gatieme) ), 由 [成坚(gatieme)](http://blog.csdn.net/gatieme) 创作.
|
||||
|
||||
@@ -618,6 +618,24 @@ glcc 则实现了 eBPF 驱动和 libbpf 的支持, 允许 eBPF 程序无需修
|
||||
| [grafana/phlare](https://github.com/grafana/phlare) | 一个水平可扩展, 高可用, 多租户的持续性能分析聚合系统. 它已被 Grafana LAB 收购, 未来的 |
|
||||
| [maxgio92/yap](https://github.com/maxgio92/yap) | 一个基于 Go 和 eBPF 的低开销的采样 CPU Profiler, 它不需要在被分析的二进制文件中进行任何插装. [Unleashing the power of frame pointers pt.1 - The execution environment](https://blog.maxgio.me/posts/unleashing-power-frame-pointers-execution-environment), [Unleashing the power of frame pointers for profiling pt.2 - Writing a simple profiler](https://blog.maxgio.me/posts/unleashing-power-frame-pointers-writing-simple-continuous-profiler) |
|
||||
|
||||
|
||||
## 8.8 bpftrace
|
||||
-------
|
||||
|
||||
|
||||
| 项目 | 描述 | 支持 | 推荐星级 | Star 数量 |
|
||||
|:---:|:----:|:---:|:-------:|:--------:|
|
||||
| [multikernel/kernelscript](https://github.com/multikernel/kernelscript) | [2026/05/24, phoronix, KernelScript: A Programming Language For Kernel Customization & App Optimizations](https://www.phoronix.com/news/KernelScript) | NA | ⭐ | 479 |
|
||||
|
||||
## 8.9 OTHER
|
||||
-------
|
||||
|
||||
|
||||
| 项目 | 描述 | 支持 | 推荐星级 | Star 数量 |
|
||||
|:---:|:----:|:---:|:-------:|:--------:|
|
||||
| [pandaadir05/snoop](https://github.com/pandaadir05/snoop) | 基于 eBPF 的现代系统调用跟踪工具, 类似 strace 但具有实时 TUI 界面、智能过滤器、TLS 解密和可读输出。支持多种输出格式(raw、json、explain)、60+ 系统调用参数解码、容器支持、TLS 捕获、堆跟踪、记录回放和火焰图生成. 使用 Rust 和 aya 编写 eBPF 程序, 无需内核模块和 C 工具链. | 系统调用跟踪、性能分析 | ⭐ | 150 |
|
||||
| [pktz](https://github.com/immanuwell/pktz) | 基于 eBPF 的网络流量监控工具, 提供进程级和连接级的实时流量监控. 核心功能包括: 实时 RX/TX 速率显示、连接详情查看、Unicode 图表、GeoIP 标记 + ASN 信息、DNS 解析. 支持三种模式: TUI 交互模式、Log 模式(NDJSON 输出)、Prometheus metrics 模式. 技术上基于 Go 语言 + eBPF 技术, 直接挂钩内核, 无需轮询 /proc, 无采样, 每个字节每个进程都不放过. 适用于网络流量监控、调试、安全审计等场景. | Linux | ⭐ | 83 |
|
||||
|
||||
# 9 WASM(WebAssembly)
|
||||
-------
|
||||
|
||||
|
||||
@@ -147,6 +147,8 @@ https://lwn.net/Articles/422487/
|
||||
| 2009/08/05 | Arjan van de Ven <arjan@infradead.org> | [Implement crashkernel=auto](https://lore.kernel.org/patchwork/cover/166256) | 实现 crashkernel=auto . | v1 ☐ | [PatchWork](https://lore.kernel.org/patchwork/cover/166256) |
|
||||
| 2022/08/28 | Baoquan He <bhe@redhat.com> | [arm64, kdump: enforce to take 4G as the crashkernel low memory end](https://patchwork.kernel.org/project/linux-mm/cover/20220828005545.94389-1-bhe@redhat.com/) | 671768 | v1 ☐☑ | [LORE v1,0/2](https://lore.kernel.org/r/20220828005545.94389-1-bhe@redhat.com) |
|
||||
| 2024/03/05 | Steven Rostedt <rostedt@goodmis.org> | [tracing: Persistent traces across a reboot or crash](https://lore.kernel.org/all/20240306015910.766510873@goodmis.org) | [Experimental Linux Patches Allow Kernel Tracing To Work Past Reboots/Crashes](https://www.phoronix.com/news/Linux-Tracing-Post-Reboots). | v1 ☐☑✓ | [LORE v1,0/8](https://lore.kernel.org/all/20240306015910.766510873@goodmis.org) |
|
||||
| 2025/11/19 | Eugen Hristev <eugen.hristev@linaro.org> | [Introduce meminspect](https://lore.kernel.org/all/20251119154427.1033475-1-eugen.hristev@linaro.org) | Eugen Hristev 提出了一项名为 **meminspect** 的新机制, 用于在 Linux 内核中标记特定内存区域以进行调试、统计和内存转储. 该机制不依赖于 panic handler 或运行中的内核, 适用于 pstore、kdump 等机制无法使用的设备. meminspect 可生成类似 `/proc/vmcore` 的核心镜像, 供 crash 工具或 GDB 分析.<br> 该补丁系列基于此前的 kmemdump 和 minidump 实现, 已重命名为 meminspect 并移至 `kernel/` 目录. 它引入了两个驱动: **Qualcomm Minidump** 和 **Debug Kinfo**( 用于 Android) . meminspect 利用 memblock 标志和 vmcoreinfo 注册内存区域, 并在系统运行时维护内存区域表.<br> 补丁已基于社区反馈多次迭代, 包括移除 . section、整合进 vmcoreinfo、调整 API 和文档等. 作者将在 Plumbers 会议中进一步讨论该方案.<br> 使用时需启用 `CONFIG_MEMINSPECT`、`CONFIG_CRASH_DUMP` 和相关驱动, 并通过工具( 如 qdl 或 edl) 提取内存区域后合并分析. | v1 ☐☑✓ | [2025/11/19, LORE v1, 0/26](https://lore.kernel.org/all/20251119154427.1033475-1-eugen.hristev@linaro.org) |
|
||||
|
||||
|
||||
[crash extension modules](https://crash-utility.github.io/extensions.html)
|
||||
|
||||
@@ -438,7 +440,7 @@ $reclaim = current\_mem \times reclaim\_ratio \times max(0,1 – \frac{psi_some}
|
||||
|
||||
|
||||
|
||||
## 11.3 Userspace counter access
|
||||
## 11.3 Userspace Counter Access
|
||||
-------
|
||||
|
||||
x86 和 arm64 都支持直接访问用户空间中的事件计数器. 访问序列并不简单, 目前存在于 perf 测试代码 (tools/perf/arch/x86/tests/rdpmc.c) 中, 在 PAPI 和 libpfm4 等项目中有类似的用例程序.
|
||||
@@ -468,14 +470,14 @@ x86 和 arm64 都支持直接访问用户空间中的事件计数器. 访问序
|
||||
| 2022/03/22 | Stephane Eranian <eranian@google.com> | [perf/x86/amd: Add AMD Fam19h Branch Sampling support](https://lore.kernel.org/all/20220322221517.2510440-1-eranian@google.com) | 引入 CONFIG_PERF_EVENTS_AMD_BRS. perf 支持 BRS. AMD 系列 19h "Zen 3" 处理器新增了分支采样功能 BRS, 用于收集代码执行期间所采用分支的详细信息. 该功能可用于 AMD 处理器上的 AutoFDO 样式优化, 编译器利用收集的硬件数据来做出更明智和准确的优化决策. | v7 ☑✓ 5.19-rc1 | [LORE v7,0/13](https://lore.kernel.org/all/20220322221517.2510440-1-eranian@google.com) |
|
||||
|
||||
|
||||
## 11.5 perf-KWork
|
||||
## 11.5 perf kwork
|
||||
-------
|
||||
|
||||
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|
||||
|:---:|:----:|:---:|:----:|:---------:|:----:|
|
||||
| 2022/07/09 | Yang Jihong <yangjihong1@huawei.com> | [perf: Add perf kwork](https://lore.kernel.org/all/20220709015033.38326-1-yangjihong1@huawei.com) | 开发者经常需要分析内核工作的时间属性, 例如 irq、softirq 和工作队列, 包括特定中断的延迟和运行时间. 目前, 这些事件具有内核跟踪点, 但 perf 工具不直接分析这些事件的延迟. perf kwork 工具用于跟踪内核工作的时间属性(如 irq、softirq 和 workqueue), 包括运行时、延迟和时间历史, 使用 perf 工具中的基础设施来允许跟踪额外的目标, 我们还使用 bpf 跟踪来收集和过滤内核中的数据, 以解决大 perf 数据量和额外文件系统中断的问题. | v3 ☐☑✓ | [LORE v3,0/17](https://lore.kernel.org/all/20220709015033.38326-1-yangjihong1@huawei.com) |
|
||||
|
||||
## 11.6 perf-lock
|
||||
## 11.6 perf lock
|
||||
-------
|
||||
|
||||
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|
||||
@@ -1305,7 +1307,7 @@ Fedora 尝试优化 systemd 开机以及重启的时间, 参见 phoronix 报道
|
||||
| 2025/05/12 | Nam Cao <namcao@linutronix.de> | [RV: Linear temporal logic monitors for RT application](https://lore.kernel.org/all/cover.1747046848.git.namcao@linutronix.de) |旨在为实时( RT) 应用引入基于线性时序逻辑( LTL)的运行时验证( RV) 监控机制. 补丁系列包括以下关键内容: <br>1. LTL监控支持: 新增 LTL 监控模块, 相比原先的确定性自动机, LTL 更简洁直观,适合表达实时规则;<br>2. RT 应用监控器(rtapp): 作为容器封装子监控模块;<br>3. 页错误监控( rtapp_pagefault): 用于检测实时任务中的页错误; <br>4. 睡眠监控( rtapp_sleep): 检测实时线程中可能引起延迟的睡眠行为;<br>5. 配置支持: 允许配置每任务监控器数量, 以同时启用多个监控; <br>6. 文档更新: 补充 LTL 和监控器相关文档; <br>7. 代码结构优化: 整合 dot2k 和 rvgen 工具, 重构模板与类结构, 提升代码可维护性.<br>各版本更新主要修复脚本问题、优化检测逻辑、处理边缘情况, 并调整部分架构的跟踪点. 补丁已覆盖 x86、ARM64 和 RISC-V 架构. 参见 [LWN, 2025/07/30, Extending run-time verification for the kernel](https://lwn.net/Articles/1030685). | v8 ☐☑✓ | [2025/05/12, LORE v8, 0/22](https://lore.kernel.org/all/cover.1747046848.git.namcao@linutronix.de) |
|
||||
| 2025/07/30 | Nam Cao <namcao@linutronix.de> | [rv: LTL per-cpu monitor type and real-time scheduling monitor](https://lore.kernel.org/all/cover.1753879295.git.namcao@linutronix.de) | 邮件提出了一组 5 个补丁, 旨在为 Linux 内核的 Roving( rv) 子系统添加对线性时序逻辑(LTL) 的 per-cpu 监控类型支持, 并新增一个用于验证实时调度(real-time scheduling) 的监控模块. 该系列补丁首先对现有 LTL 监控代码进行重构, 以支持多种监控类型; 随后实现 per-cpu 监控机制, 类似于现有的确定性自动机监控. 此外, 补丁还引入了新的 trace point 用于实时任务的入队与出队事件, 并通过 rvgen 工具生成LTL 监控代码. 最终新增的 rts 监控模块可检测实时调度行为是否符合预期. | v1 ☐☑✓ | [2025/07/30, LORE v1, 0/5](https://lore.kernel.org/all/cover.1753879295.git.namcao@linutronix.de) |
|
||||
| 2025/07/23 | Gabriele Monaco <gmonaco@redhat.com> | [tools/verification: Improvements to rv and rvgen](https://lore.kernel.org/all/20250723161240.194860-1-gmonaco@redhat.com) | 改进 Linux 内核中的 rv 和 rvgen 验证工具. 主要内容包括: <br>1. 修复 rv 工具在使用 -s 选项时跳过 idle 任务的问题;<br>2. 增加 rv 对 SIGTERM 信号的优雅终止处理; <br>3. 修改 dot2c 脚本避免生成超过 100 列的代码行; <br>4. 调整 RV Kconfig 文件中嵌套监控模块的顺序; <br>5. 在 DA 监控初始化失败时返回正确错误码, 而非 0. | v1 ☐☑✓ | [2025/07/23, LORE v1, 0/5](https://lore.kernel.org/all/20250723161240.194860-1-gmonaco@redhat.com)<br>*-*-*-*-*-*-*-* <br>[2025/08/06, LORE v2, 0/5](https://lore.kernel.org/all/cover.1754466623.git.namcao@linutronix.de)<br>*-*-*-*-*-*-*-* <br>[2025/08/11, LORE v3, 0/5](https://lore.kernel.org/all/cover.1754900299.git.namcao@linutronix.de) |
|
||||
| 2025/08/14 | Gabriele Monaco <gmonaco@redhat.com> | [rv: Add Hybrid Automata monitor type, per-object and deadline monitors](https://lore.kernel.org/all/20250814150809.140739-1-gmonaco@redhat.com) | 改进 Linux 内核中的 RV( Runtime Verification) 监控功能, 目标是增强内核运行时验证能力, 提升调度与实时性监控的准确性. 核心内容包括: <br>1. 混合自动机(Hybrid Automata) 监控类型: 扩展确定性自动机, 支持环境变量约束判断, 适用于定时自动机场景. <br>2. 对象级监控(Per-object Monitors): 支持为任意对象(如任务) 创建监控实例, 通过 ID 索引存储监控数据. <br>3. 期限(Deadline)监控集合: 新增 throttle 和 nomiss 监控模块, 用于验证 deadline 调度器的时间行为. <br>4. 对 da_monitor 进行宏清理与重构, 提升代码可维护性. <br>5. 多处文档更新与 rvgen 工具链改进, 支持新监控类型的生成与集成. | v1 ☐☑✓ | [2025/08/14, LORE v1, 0/17](https://lore.kernel.org/all/20250814150809.140739-1-gmonaco@redhat.com)<br>*-*-*-*-*-*-*-* <br>[2025/09/19, LORE v2, 0/20](https://lore.kernel.org/all/20250919140954.104920-1-gmonaco@redhat.com)<br>*-*-*-*-*-*-*-* <br>[2025/12/05, LORE v3, 0/20](https://lore.kernel.org/all/20251205131621.135513-1-gmonaco@redhat.com)<br>*-*-*-*-*-*-*-* <br>[2026/01/22, LORE v3, 0/20](https://lore.kernel.org/all/20260122155500.362683-1-gmonaco@redhat.com) |
|
||||
| 2025/08/14 | Gabriele Monaco <gmonaco@redhat.com> | [rv: Add Hybrid Automata monitor type, per-object and deadline monitors](https://lore.kernel.org/all/20250814150809.140739-1-gmonaco@redhat.com) | 改进 Linux 内核中的 RV( Runtime Verification) 监控功能, 目标是增强内核运行时验证能力, 提升调度与实时性监控的准确性. 核心内容包括: <br>1. 混合自动机(Hybrid Automata) 监控类型: 扩展确定性自动机, 支持环境变量约束判断, 适用于定时自动机场景. <br>2. 对象级监控(Per-object Monitors): 支持为任意对象(如任务) 创建监控实例, 通过 ID 索引存储监控数据. <br>3. 期限(Deadline)监控集合: 新增 throttle 和 nomiss 监控模块, 用于验证 deadline 调度器的时间行为. <br>4. 对 da_monitor 进行宏清理与重构, 提升代码可维护性. <br>5. 多处文档更新与 rvgen 工具链改进, 支持新监控类型的生成与集成. | v1 ☐☑✓ | [2025/08/14, LORE v1, 0/17](https://lore.kernel.org/all/20250814150809.140739-1-gmonaco@redhat.com)<br>*-*-*-*-*-*-*-* <br>[2025/09/19, LORE v2, 00/20](https://lore.kernel.org/all/20250919140954.104920-1-gmonaco@redhat.com)<br>*-*-*-*-*-*-*-* <br>[2025/12/05, LORE v3, 00/20](https://lore.kernel.org/all/20251205131621.135513-1-gmonaco@redhat.com)<br>*-*-*-*-*-*-*-* <br>[2026/01/22, LORE v3, 00/20](https://lore.kernel.org/all/20260122155500.362683-1-gmonaco@redhat.com)<br>*-*-*-*-*-*-*-* <br>[2026/03/10, LORE v7, 00/15](https://lore.kernel.org/all/20260310105627.332044-1-gmonaco@redhat.com)<br>*-*-*-*-*-*-*-* <br>[2026/03/30, LORE v8, 00/12](https://lore.kernel.org/all/20260330111010.153663-1-gmonaco@redhat.com) |
|
||||
|
||||
|
||||
# 21 新语言支持
|
||||
@@ -1410,6 +1412,13 @@ Fedora 尝试优化 systemd 开机以及重启的时间, 参见 phoronix 报道
|
||||
|
||||
[A look at dynamic linking](https://lwn.net/Articles/961117/)
|
||||
|
||||
# 25 API
|
||||
-------
|
||||
|
||||
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|
||||
|:---:|:----:|:---:|:----:|:---------:|:----:|
|
||||
| 2026/05/29 | Sasha Levin <sashal@kernel.org> | [Kernel API Specification Framework](https://lore.kernel.org/all/20260529233311.1901670-1-sashal@kernel.org) | 旨在为内核 API 提供形式化规范机制, 解决长期存在的用户空间接口稳定性问题. 该框架支持参数类型、取值范围、执行上下文、错误码等接口行为的描述, 并可嵌入代码中, 兼具可读性和可解析性.<br> 该框架支持运行时检查( CONFIG_KAPI_RUNTIME_CHECKS) 、debugfs 导出、ftrace 跟踪、静态分析、自动化测试和文档生成. 实现包括 ELF 段存储、kerneldoc 集成、Rust 提取工具( 支持 JSON/RST/文本输出) 及 KUnit 和 TAP 测试套件. 已为 sys_open、sys_close、sys_read、sys_write 和 sys_madvise 添加示例规范.<br> 此版本修复了构建问题、优化了内存布局、改进了 DSL 语法, 并更新了工具链. 补丁集已通过 LTP 测试验证. | v4 ☐☑✓ | [2026/05/29, LORE v4, 0/11](https://lore.kernel.org/all/20260529233311.1901670-1-sashal@kernel.org) |
|
||||
|
||||
|
||||
# X 学习参考
|
||||
-------
|
||||
|
||||
@@ -506,7 +506,8 @@ Proxy Execution 是一种通用形式的优先级继承机制, 它旨在解决
|
||||
| 2024/02/02 | Metin Kaya <metin.kaya@arm.com> | [sched: Add trace events for Proxy Execution (PE)](https://lore.kernel.org/all/20240202083338.1328060-1-metin.kaya@arm.com) | 添加 `sched_[start,finish]_task_selection` 跟踪事件以测量 PE 补丁在任务选择中的延迟. 此外, 在 PE 中引入有趣事件的跟踪事件:<br>1. sched_pe_enque_sleeping_task: 一个任务在睡眠任务(互斥体所有者)的等待队列中排队.<br>2. sched_pe_cross_mote_cpu: 依赖链跨远程 cpu.<br>3. sched_pe_task_is_migration: 互斥所有者任务迁移. 可以通过以下命令测试新的跟踪事件: `perf record -e sched:sched_start_task_selection -e sched:sched_finish_task_selection -e sched:sched_pe_enque_sleeping_task -e sched:sched_pe_cross_mote_cpu -e sched:sched_pe_task_is_migration`. 此补丁基于 John 的 [Proxy Execution v7 补丁系列](https://lore.kernel.org/linux-kernel/CANDhNCrHd+5twWVNqBAhVLfhMhkiO0KjxXBmwVgaCD4kAyFyWw@mail.gmail.com). | v1 ☐☑✓ | [LORE](https://lore.kernel.org/all/20240202083338.1328060-1-metin.kaya@arm.com) |
|
||||
| 2024/11/05 | John Stultz <jstultz@google.com> | [Single CPU Proxy Execution (v13)](https://lore.kernel.org/all/20241106025656.2326794-1-jstultz@google.com) | 这组补丁的主要目的是实现单 CPU 代理执行(Single CPU Proxy Execution)机制, 这是一种通用形式的优先级继承(priority inheritance)方法, 旨在解决某些特定场景下的调度问题.<br>1. 实现单 CPU 代理执行机制, 支持作为构建和运行时选项.<br>2. 重新设计互斥锁的 blocked_on 结构, 以便更好地支持代理执行.<br>3. 处理代理执行带来的假设变化, 确保调度器的正确性.<br>4. 实现初始逻辑, 使锁持有者可以在同一 CPU 上代替等待任务运行.<br>通过这些改动, 调度器在处理某些特定场景下的优先级继承问题时更加高效和灵活, 提高了系统的整体性能和响应速度. 参见 [Paper](https://static.lwn.net/images/conf/rtlws11/papers/proc/p38.pdf) | v13 ☐☑✓ | [LORE v13,0/7](https://lore.kernel.org/all/20241106025656.2326794-1-jstultz@google.com)<br>*-*-*-*-*-*-*-* <br>[2024/11/25, LORE v14,0/7](https://lore.kernel.org/all/20241125195204.2374458-1-jstultz@google.com) |
|
||||
| 2025/03/12 | John Stultz <jstultz@google.com> | [Single RunQueue Proxy Execution](https://lore.kernel.org/all/20250312221147.1865364-1-jstultz@google.com) | 单运行队列(RunQueue)代理执行(Proxy Execution)的 V15 版本, 这是一种通用的优先级继承机制. <br>1. 问题: 在多核系统中, 当一个高优先级任务被低优先级任务阻塞时, 传统的优先级继承机制可能无法有效解决优先级反转问题, 尤其是在涉及多个运行队列(RunQueue)时.<br>2. 目标: 通过引入代理执行机制, 允许高优先级任务在等待锁时, 将执行权"代理"给其他任务, 从而减少高优先级任务的等待时间, 并提高系统的响应能力.<br>3. 核心思想: 当一个任务被阻塞时, 如果锁的持有者和等待者在同一个运行队列上, 那么可以将执行权"代理"给锁的持有者, 从而避免高优先级任务长时间等待. 参见报道 [phoronix, 2025/07/17, Single RunQueue Proxy Execution Appears Ready For Linux 6.17](http://phoronix.com/news/Linux-6.17-Proxy-Execution). | v15 ☐☑✓ | [2025/03/12, LORE v15,0/7](https://lore.kernel.org/all/20250312221147.1865364-1-jstultz@google.com)<br>*-*-*-*-*-*-*-* <br>[2025/04/12, LORE v16, 0/7](https://lore.kernel.org/all/20250412060258.3844594-1-jstultz@google.com)<br>*-*-*-*-*-*-*-* <br>[2025/05/16, LORE v17, 0/8](https://lore.kernel.org/all/20250516031814.1870508-1-jstultz@google.com)<br>*-*-*-*-*-*-*-* <br>[2025/06/02, LORE RESEND v17, 0/8](https://lore.kernel.org/all/20250602221004.3837674-1-jstultz@google.com)<br>*-*-*-*-*-*-*-* <br>[2025/06/25, LORE v18, 0/8](https://lore.kernel.org/all/20250625203110.2299275-1-jstultz@google.com)<br>*-*-*-*-*-*-*-* <br>[2025/07/07, LORE RESEND v18, 0/8](https://lore.kernel.org/all/20250707204409.1028494-1-jstultz@google.com)<br>*-*-*-*-*-*-*-* <br>[2025/07/12, LORE v19, 0/8](https://lore.kernel.org/all/20250712033407.2383110-1-jstultz@google.com) |
|
||||
| 2025/07/22 | John Stultz <jstultz@google.com> | [Donor Migration for Proxy Execution](https://lore.kernel.org/all/20250722070600.3267819-1-jstultz@google.com) | John Stultz 提交了 Proxy Execution 系列补丁的" Donor Migration" 部分(v20), 旨在实现阻塞等待任务的迁移, 以支持跨 CPU 代理执行锁拥有者. 该部分基于 Peter Zijlstra 已合入的 Single-RQ 补丁<br>主要新增了任务阻塞状态的序列化机制、三态 blocked_on_state 支持、平衡回调清理逻辑、以及支持 donor 迁移与链式迁移. 补丁还涉及对锁定机制和调度器的修改, 以防止任务在不合适的 CPU 上运行.<br>待解决问题包括: dl_server 导致的测试挂起、调度扩展( sched_ext) 兼容性、性能回归测试、以及链式迁移对 RT/DL 负载均衡的保证. | v20 ☐☑✓ | [2025/07/22, LORE v20, 0/6](https://lore.kernel.org/all/20250722070600.3267819-1-jstultz@google.com)<br>*-*-*-*-*-*-*-* <br>[2025/09/04, LORE v21, 0/6](https://lore.kernel.org/all/20250904002201.971268-1-jstultz@google.com)<br>*-*-*-*-*-*-*-* <br>[2025/09/26, LORE v22, 0/6](https://lore.kernel.org/all/20250926032931.27663-1-jstultz@google.com) |
|
||||
| 2025/07/22 | John Stultz <jstultz@google.com> | [(Simple/Optimized) Donor Migration for Proxy Execution](https://lore.kernel.org/all/20250722070600.3267819-1-jstultz@google.com) | John Stultz 提交了 Proxy Execution 系列补丁的" Donor Migration" 部分(v20), 旨在实现阻塞等待任务的迁移, 以支持跨 CPU 代理执行锁拥有者. 该部分基于 Peter Zijlstra 已合入的 Single-RQ 补丁<br>主要新增了任务阻塞状态的序列化机制、三态 blocked_on_state 支持、平衡回调清理逻辑、以及支持 donor 迁移与链式迁移. 补丁还涉及对锁定机制和调度器的修改, 以防止任务在不合适的 CPU 上运行.<br>待解决问题包括: dl_server 导致的测试挂起、调度扩展( sched_ext) 兼容性、性能回归测试、以及链式迁移对 RT/DL 负载均衡的保证. | v20 ☐☑✓ | [2025/07/22, LORE v20, 0/6](https://lore.kernel.org/all/20250722070600.3267819-1-jstultz@google.com)<br>*-*-*-*-*-*-*-* <br>[2025/09/04, LORE v21, 0/6](https://lore.kernel.org/all/20250904002201.971268-1-jstultz@google.com)<br>*-*-*-*-*-*-*-* <br>[2025/09/26, LORE v22, 0/6](https://lore.kernel.org/all/20250926032931.27663-1-jstultz@google.com)<br>*-*-*-*-*-*-*-* <br>[2025/11/24, LORE v24, 00/11](https://lore.kernel.org/all/20251124223111.3616950-1-jstultz@google.com)<br>*-*-*-*-*-*-*-* <br>[2026/03/24, LORE v26, 00/10](https://lore.kernel.org/all/20260324191337.1841376-1-jstultz@google.com) |
|
||||
| 2026/05/26 | Peter Zijlstra <peterz@infradead.org> | [sched/proxy: doodles..](https://lore.kernel.org/all/20260526111609.433880331@infradead.org) | 旨在清理代码并尝试移除 PROXY_WAKING 标志, 改用 ->is_blocked 替代原有的 ->blocked_on 机制.补丁 4 中切换到 ->is_blocked 后, 在 schedule() 和 pick_next_task() 中运行良好, 但在 ttwu_runnable() 中遇到问题, 因缺乏锁保护, 导致延迟任务始终被完全阻塞.作者提到此前曾尝试过 ttwu-delayed 补丁, 或可结合该方案解决此问题.目前仅前 3 个补丁可能具备合入价值, 其余仍需调试. | v1 ☐☑✓ | [2026/05/26, LORE v1, 0/6](https://lore.kernel.org/all/20260526111609.433880331@infradead.org) |
|
||||
|
||||
|
||||
# 12 深入理解并行编程
|
||||
|
||||
@@ -7388,6 +7388,7 @@ KFENCE 的灵感来自于 [GWP-ASan](http://llvm.org/docs/GwpAsan.html), 这是
|
||||
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|
||||
|:----:|:----:|:---:|:----:|:---------:|:----:|
|
||||
| 2016/02/03 | Christian Borntraeger <borntraeger@de.ibm.com> | [Optimize CONFIG_DEBUG_PAGEALLOC (x86 and s390)](https://damonitor.github.io) | 优化 CONFIG_DEBUG_PAGEALLOC, 提供了 debug_pagealloc_enabled(), 可以动态的开启 DEBUG_PAGEALLOC. | v4 ☑ 4.6-rc1 | [PatchWork v4,0/4](https://lore.kernel.org/patchwork/patch/642851) |
|
||||
| 2025/11/19 | Eugen Hristev <eugen.hristev@linaro.org> | [Introduce meminspect](https://lore.kernel.org/all/20251119154427.1033475-1-eugen.hristev@linaro.org) | Eugen Hristev 提出了一项名为 **meminspect** 的新机制, 用于在 Linux 内核中标记特定内存区域以进行调试、统计和内存转储. 该机制不依赖于 panic handler 或运行中的内核, 适用于 pstore、kdump 等机制无法使用的设备. meminspect 可生成类似 `/proc/vmcore` 的核心镜像, 供 crash 工具或 GDB 分析. < br> < br> 该补丁系列基于此前的 kmemdump 和 minidump 实现, 已重命名为 meminspect 并移至 `kernel/` 目录. 它引入了两个驱动: **Qualcomm Minidump** 和 **Debug Kinfo**( 用于 Android) . meminspect 利用 memblock 标志和 vmcoreinfo 注册内存区域, 并在系统运行时维护内存区域表. < br> < br> 补丁已基于社区反馈多次迭代, 包括移除 . section、整合进 vmcoreinfo、调整 API 和文档等. 作者将在 Plumbers 会议中进一步讨论该方案. < br> < br> 使用时需启用 `CONFIG_MEMINSPECT`、`CONFIG_CRASH_DUMP` 和相关驱动, 并通过工具( 如 qdl 或 edl) 提取内存区域后合并分析. | v1 ☐☑✓ | [2025/11/19, LORE v1, 0/26](https://lore.kernel.org/all/20251119154427.1033475-1-eugen.hristev@linaro.org) |
|
||||
|
||||
|
||||
## 13.5 tracepoint
|
||||
|
||||
File diff suppressed because one or more lines are too long
+778
-154
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user