From deea6de0a369c8fcd80c67aad9458bb9e3a5c88e Mon Sep 17 00:00:00 2001 From: Cheng Jian Date: Sun, 30 Apr 2023 22:22:45 +0800 Subject: [PATCH] description/open_source: update phoronix vs LWN to date 20230320 --- study/kernel/00-DESCRIPTION/ARCH.md | 1 + study/kernel/00-DESCRIPTION/BPF.md | 5 +- study/kernel/00-DESCRIPTION/DEBUGGING.md | 70 ++++++---- study/kernel/00-DESCRIPTION/LOCKING.md | 2 + study/kernel/00-DESCRIPTION/MEMORY_MANAGER.md | 65 +++++++-- study/kernel/00-DESCRIPTION/SCHEDULER.md | 34 ++++- study/kernel/00-DESCRIPTION/TODO.md | 128 +++++------------- 7 files changed, 168 insertions(+), 137 deletions(-) diff --git a/study/kernel/00-DESCRIPTION/ARCH.md b/study/kernel/00-DESCRIPTION/ARCH.md index 5a69456..e515568 100644 --- a/study/kernel/00-DESCRIPTION/ARCH.md +++ b/study/kernel/00-DESCRIPTION/ARCH.md @@ -552,6 +552,7 @@ TLB entry shootdown 常常或多或少的带来一些性能问题. | 2016/10/24 | Marc Zyngier | [arm/arm64: KVM: Perform local TLB invalidation when multiplexing vcpus on a single CPU](https://patchwork.kernel.org/project/kvm/patch/1477323088-18768-1-git-send-email-marc.zyngier@arm.com) | KVM 当 guest 在运行的时候, 避免 tlbi 广播. | RFC v1 ☐ | [Patchwork RTC](https://lore.kernel.org/linux-arm-kernel/1603331829-33879-1-git-send-email-zhangshaokun@hisilicon.com) | | 2020/02/23 | Andrea Arcangeli | [arm64: tlb: skip tlbi broadcast v2](https://lore.kernel.org/all/20200223192520.20808-1-aarcange@redhat.com) |20200223192520.20808-1-aarcange@redhat.com | v1 ☐ | [LORE](https://lore.kernel.org/all/20200223192520.20808-1-aarcange@redhat.com) | | 2022/09/13 | Joe Damato | [mm: Track per-task tlb events](https://lore.kernel.org/all/1663120270-2673-1-git-send-email-jdamato@fastly.com) | 通过检查 `/proc/interrupts`, 可以在每个 CPU 的基础上测量 TLB shootdown 事件. 如果 CONFIG_DEBUG_TLBFLUSH 被启用, 关于 TLB 事件的进一步信息可以从 `/proc/vmstat` 中获取, 但是这些信息是系统范围的. 这些信息是有用的, 但是在一个有许多任务的繁忙系统上, 很难消除 TLB shootdown 事件的来源的模糊性. 这组补丁跟踪每个任务的这些信息可以使开发人员修复或调整用户空间分配器, 以减少 IPI 的数量并提高应用程序性能. 为 task_struct 和 signal_struct 添加了两个新字段, 以帮助跟踪 TLB 事件:
1. ngtlbflush: 生成 TLB flush 的数量.
2. nrtlbflush: 收到 TLB flush 的数量.
这些统计数据被导出到 `/proc/[pid]/stat` 中, 与类似的指标 (如 min_flt 和 maj_flt) 一起进行分析. | v1 ☐☑✓ | [LORE v1,0/1](https://lore.kernel.org/all/1663120270-2673-1-git-send-email-jdamato@fastly.com) | +| 2023/03/12 | Yair Podemsky | [mm/mmu_gather: send tlb_remove_table_smp_sync IPI only to MM CPUs](https://lore.kernel.org/all/20230312080945.14171-1-ypodemsk@redhat.com) | 目前, tlb_remove_table_smp_sync() 将 IPI 被不分青红皂白地发送到所有 CPU, 这会导致不必要的工作和延迟, 在实时用例和隔离的 CPU 中尤为值得注意, 此补丁将限制此 IPI 仅发送到引用受影响 mm 的 cpu, 并且当前在内核空间中. | v1 ☐☑✓ | [LORE](https://lore.kernel.org/all/20230312080945.14171-1-ypodemsk@redhat.com)| > 注: x86 由于没有 tlb IS 方案, 因此只能采用 IPI 的方式来完成 TLB shootdown. diff --git a/study/kernel/00-DESCRIPTION/BPF.md b/study/kernel/00-DESCRIPTION/BPF.md index ea53ce4..3a295bb 100644 --- a/study/kernel/00-DESCRIPTION/BPF.md +++ b/study/kernel/00-DESCRIPTION/BPF.md @@ -540,7 +540,10 @@ Wasmtime 完全开源, 使用 Rust 编程语言, 是的, 并且符合 WASI 标 | 工具 | 描述 | |:---:|:----:| | [nyrahul/ebpf-guidee](https://github.com/nyrahul/ebpf-guide) | eBPF 常见问题, 样例以及工具汇总 | -| [](https://github.com/apache/skywalking-rover) | | +| [apache/skywalking-rover](https://github.com/apache/skywalking-rover) | | +| [GroundCover](https://github.com/groundcover-com) | [GroundCover](https://www.groundcover.com) 轻松、大规模地监控 K8s 应用 | +| [Exein-io/pulsar](https://github.com/Exein-io/pulsar) | [Tracing the Linux kernel using Exein Pulsar: a 5 Minute Tutorial](https://blog.exein.io/pulsar-tutorial) + ## X.2 业界博客 ------- diff --git a/study/kernel/00-DESCRIPTION/DEBUGGING.md b/study/kernel/00-DESCRIPTION/DEBUGGING.md index 6c5c940..feb5167 100644 --- a/study/kernel/00-DESCRIPTION/DEBUGGING.md +++ b/study/kernel/00-DESCRIPTION/DEBUGGING.md @@ -341,9 +341,17 @@ $reclaim = current\_mem \times reclaim\_ratio \times max(0,1 – \frac{psi_some} ### 11.1.1 perf script ------- + +`struct scripting_ops` 封装了 perf 支持的高级语言解析框架. 可通过 script_spec_register() 注册, 当前支持 perl, python. + + | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | |:----:|:----:|:---:|:----:|:---------:|:----:| -| 2019/09/18 | Yafang Shao | [introduce new perf-script page-reclaim](https://lore.kernel.org/patchwork/cover/1128886) | 为 perf 引入了一个新的 python 脚本 page-reclaim.py 页面回收, 用于报告页面回收详细信息.
此脚本目前的用途如下:
1. 识别由直接回收引起的延迟峰值
2. 延迟峰值与 pageout 是否相关
3. 请求页面回收的原因, 即是否是内存碎片
4. 页面回收效率等. 将来, 我们还可以将其增强以分析 memcg 回收. | v1 ☐ | [PatchWork 0/2](https://lore.kernel.org/patchwork/cover/1128886) | +| 2009/11/25 | Tom Zanussi | [perf trace: general-purpose scripting support](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=1ae4a971250c55e473ca53c78011fcf73809885d) | 为解析 ascii 跟踪输出的流行方法提供一种更高效、更强大的替代方法, 以便从中提取有用的信息. 为了避免所有这些的开销和复杂性, 这个补丁集提供了一个直接到脚本的解释器路径来做同样的事情, 但以一种更规则化的方式, 它利用了跟踪基础结构提供的所有事件元信息, 例如为此目的设计的 "格式文件" 中包含的事件 / 字段信息. 它允许将通用脚本语言的全部功能应用于跟踪流, 以进行非琐碎的分析, 并突然提供了大量有用的工具和模块库(例如, 用于 Perl 的 CPAN), 以应用于创建新的、有趣的跟踪应用程序的问题. 当前只实现了一个 Perl 接口, 但其目的是使添加对其他语言(如 Python、Ruby 等)的支持相对容易——他们所需要做的就是以 Perl 实现为例, 提供自己的 trace_scripting_ops 实现和支持函数. | v2 ☑✓ 2.6.33-rc1 | [LORE v2,0/7](https://lore.kernel.org/all/1259133352-23685-1-git-send-email-tzanussi@gmail.com) | +| 2010/01/27 | Tom Zanussi | [perf trace: Python scripting support](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=cff68e582237cae3cf456f01153202175961dfbe) | [Scripting support for perf](https://lwn.net/Articles/373842) 以及 [Python support for the Linux perf profiler](https://docs.python.org/zh-cn/dev/howto/perf_profiling.html) | v1 ☑✓ 2.6.34-rc1 | [LORE v1,0/12](https://lore.kernel.org/all/1264580883-15324-1-git-send-email-tzanussi@gmail.com) | +| 2019/09/18 | Yafang Shao | [introduce new perf-script page-reclaim](https://lore.kernel.org/patchwork/cover/1128886) | 为 perf 引入了一个新的 python 脚本 page-reclaim.py 页面回收脚本, 用于报告页面回收详细信息.
此脚本目前的用途如下:
1. 识别由直接回收引起的延迟峰值
2. 延迟峰值与 pageout 是否相关
3. 请求页面回收的原因, 即是否是内存碎片
4. 页面回收效率等. 将来, 我们还可以将其增强以分析 memcg 回收. | v1 ☐ | [PatchWork 0/2](https://lore.kernel.org/lkml/1568817522-8754-1-git-send-email-laoar.shao@gmail.com) | +| 2020/04/09 | Andreas Gerstmayr | [perf script: Add flamegraph.py script](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5287f926920688e1151741d49da37a533ccf1960) | 这个脚本与 d3-flame-graph 协同工作, 从 perf 生成火焰图. 它支持两种输出格式:JSON 和 HTML(默认). HTML 格式将在 `/usr/share/d3-flame-graph/d3-flamegraph-base.html` 中查找一个独立的 d3-flame-graph template, 并填充收集的堆栈. | v1 ☑✓ 5.8-rc1 | [LORE](https://lore.kernel.org/lkml/20200320151355.66302-1-agerstmayr@redhat.com) | +| 2022/12/06 | Petar Gligoric | [perf: introduce perf based task analyzer](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=e8478b84d6ba9ccfac15dfce103062c4fa7ded2f) | 此补丁系列引入了任务分析器, 并添加了输出 csv 文件的功能, 以便在第三方脚本(例如 pandas 和 friends)中进行进一步分析. 任务分析器根据 sched:sched_switch 事件解析记录的性能数据文件. 它为每个任务的用户输出有用的信息, 用户可以根据自己的喜好和需要修改输出. | v2 ☑✓ 6.2-rc1 | [LORE v2,0/3](https://lore.kernel.org/all/20221206154406.41941-1-petar.gligor@gmail.com) | ### 11.1.2 show-lost-events @@ -378,35 +386,6 @@ $reclaim = current\_mem \times reclaim\_ratio \times max(0,1 – \frac{psi_some} | 2022/04/29 | Shaokun Zhang | [drivers/perf: arm_spe: Expose saturating counter to 16-bit](https://patchwork.kernel.org/project/linux-arm-kernel/patch/20220429063307.63251-1-zhangshaokun@hisilicon.com/) | 636823 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20220429063307.63251-1-zhangshaokun@hisilicon.com) | -## 11.3 TOPDOWN -------- - -[Support standalone metrics and metric groups for perf](https://lore.kernel.org/all/20170831194036.30146-1-andi@firstfloor.org) - - -### 11.3.1 stat topdown -------- - -| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | -|:----:|:----:|:---:|:----:|:---------:|:----:| -| 2016/05/24 | Andi Kleen | [perf stat: Basic support for TopDown in perf stat](https://lore.kernel.org/all/1464119559-17203-1-git-send-email-andi@firstfloor.org) | perf stat 支持 topdown 分析. | v1 ☑ 4.8-rc1 | [PatchWork 1/4](https://lore.kernel.org/all/1464119559-17203-1-git-send-email-andi@firstfloor.org) | -| 2021/02/02 | Kan Liang | [perf stat: Support L2 Topdown events](https://lore.kernel.org/lkml/1612296553-21962-9-git-send-email-kan.liang@linux.intel.com) | perf stat 支持 Level 2 级别 topdown 分析. [perf core PMU support for Sapphire Rapids (User tools)](https://lore.kernel.org/lkml/1612296553-21962-1-git-send-email-kan.liang@linux.intel.com) 系列中的其中一个补丁. | v1 ☑ 5.12-rc1 | [PatchWork 1/4](https://lore.kernel.org/lkml/1612296553-21962-9-git-send-email-kan.liang@linux.intel.com) | - - -### 11.3.2 metricsgroup topdown -------- - -| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | -|:----:|:----:|:---:|:----:|:---------:|:----:| -| 2017/08/31 | Andi Kleen | [Support standalone metrics and metric groups for perf](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=b90f1333ef08d2a497ae239798868b046f4e3a97) | 向 perf-stat 添加对 JSON 文件中指定的独立度量 metrics 的支持. 度量 metrics 使用多个事件来计算更高级别结果 (例如 IPC, TOPDOWN 等) 的公式. 对于更复杂的度量(比如 pipeline, TOPDOWN), 需要具有特定于微架构的配置, 因此将度量 metrics 与 JSON 事件列表联系起来是有意义的. 以前的度量始终与事件关联, 并随该事件自动启用. 但现在改变它, 可以有独立的指标. 它们与事件处于相同的 JSON 数据结构中, 但没有事件名称, 只有度量名称. 同时允许在度量组中组织度量, 这允许一次选择几个相关度量的快捷方式. | v3 ☑✓ 4.15-rc1 | [LORE v3,0/11](https://lore.kernel.org/all/20170831194036.30146-2-andi@firstfloor.org) | -| 2017/08/31 | Andi Kleen | [perf arm64 metricgroup support](https://lore.kernel.org/all/20170831194036.30146-1-andi@firstfloor.org) | 为 perf stat 添加[对 JSON 文件中指定的独立指标](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b18f3e365019de1a5b26a851e123f0aedcce881f) 的通用支持. 这些指标是一个公式, 它使用多个事件来计算更高级别的结果(例如 IPC, TOPDOWN 分析等). 添加一个新的 `-M /--metrics` 选项来添加指定的度量或度量组. 并增加了对 Intel X86 平台的支持. 通过这些 JSON 文件定义的事件组合度量, 可以很好的支持 TOPDOWN 分析. | v3 ☑ 4.15-rc1 | [PatchWork v3,00/11](https://lore.kernel.org/all/20170831194036.30146-1-andi@firstfloor.org) | -| 2020/09/11 | Kan Liang | [TopDown metrics support for Ice Lake (perf tool)](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=328781df86fa8f9299219c74ffae876bd625c6d1) | 为 perf metrics 分析增加对 Ice Lake 的支持. 将原本 group 重命名为 topdown. | v3 ☑ 5.10-rc1 | [PatchWork v3,0/4](https://lore.kernel.org/lkml/20200911144808.27603-1-kan.liang@linux.intel.com) | -| 2021/04/07 | John Garry | [perf arm64 metricgroup support](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=0cc177cfc95d565e1a458136a592b0bd6d487db0) | perf 支持 HiSilicon hip08 平台的 topdown metric. 支持到 Level 3. 自此鲲鹏 920 的 ARM64 服务器上, 可以使用:
`sudo perf stat -M TopDownL1 sleeep 1`
来进行 TopDown 分析了. | v1 ☑ 5.13-rc1 | [PatchWork 0/5](https://patchwork.kernel.org/project/linux-arm-kernel/cover/1614784938-27080-1-git-send-email-john.garry@huawei.com)
*-*-*-*-*-*-*-*
[PatchWork v2,0/6](https://patchwork.kernel.org/project/linux-arm-kernel/cover/1616668398-144648-1-git-send-email-john.garry@huawei.com)
*-*-*-*-*-*-*-*
[PatchWork v3,0/6](https://patchwork.kernel.org/project/linux-arm-kernel/cover/1617791570-165223-1-git-send-email-john.garry@huawei.com) | -| 2022/05/28 | zhengjun | [perf vendor events intel: Add metrics for Sapphirerapids](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=1bcca2b1bd67f3c0e5c3a88ed16c6389f01a5b31) | TODO | v2 ☑✓ 5.19-rc1 | [LORE v2,0/2](https://lore.kernel.org/all/20220528095933.1784141-1-zhengjun.xing@linux.intel.com) | -| 2022/08/25 | zhengjun.xing@linux.intel.com | [perf stat: Capitalize topdown metricsnel.org/all/20220825015458.3252239-1-zhengjun.xing@linux.intel.com) | TODO | v1 ☐☑✓ | [LORE](https://lore.kernel.org/9-1-zhengjun.xing@linux.intel.com) | -| 2022/10/21 | Shang XiaoJing | [perf vendor events arm64: Fix incorrect Hisi hip08 L3 metrics](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=e9229d5b6254a75291536f582652c599957344d2) | TODO | v2 ☑✓ 6.1-rc3 | [LORE v2,0/3](https://lore.kernel.org/all/20221021105035.10000-1-shangxiaojing@huawei.com) | -| 2022/12/14 | Sandipan Das | [perf vendor events amd: Add Zen 4 events and metrics](https://lore.kernel.org/all/20221214082652.419965-1-sandipan.das@amd.com) | [Linux 6.2 Adds AMD Zen 4 Pipeline Utilization Data To Help Find Performance Bottlenecks](https://www.phoronix.com/news/LInux-6.2-AMD-Zen-4-Events) | v2 ☐☑✓ 6.2-rc1 | [LORE v2,0/4](https://lore.kernel.org/all/20221214082652.419965-1-sandipan.das@amd.com) | - ## 11.3 Userspace counter access ------- @@ -460,6 +439,37 @@ x86 和 arm64 都支持直接访问用户空间中的事件计数器. 访问序 | 2022/07/04 | Marco Elver | [perf/hw_breakpoint: Optimize for thousands of tasks](https://lore.kernel.org/all/20220704150514.48816-1-elver@google.com) | TODO | v3 ☐☑✓ | [LORE v3,0/14](https://lore.kernel.org/all/20220704150514.48816-1-elver@google.com) | +## 11.8 TOPDOWN +------- + +[Support standalone metrics and metric groups for perf](https://lore.kernel.org/all/20170831194036.30146-1-andi@firstfloor.org) + + +### 11.8.1 stat topdown +------- + +| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | +|:----:|:----:|:---:|:----:|:---------:|:----:| +| 2016/05/24 | Andi Kleen | [perf stat: Basic support for TopDown in perf stat](https://lore.kernel.org/all/1464119559-17203-1-git-send-email-andi@firstfloor.org) | perf stat 支持 topdown 分析. | v1 ☑ 4.8-rc1 | [PatchWork 1/4](https://lore.kernel.org/all/1464119559-17203-1-git-send-email-andi@firstfloor.org) | +| 2021/02/02 | Kan Liang | [perf stat: Support L2 Topdown events](https://lore.kernel.org/lkml/1612296553-21962-9-git-send-email-kan.liang@linux.intel.com) | perf stat 支持 Level 2 级别 topdown 分析. [perf core PMU support for Sapphire Rapids (User tools)](https://lore.kernel.org/lkml/1612296553-21962-1-git-send-email-kan.liang@linux.intel.com) 系列中的其中一个补丁. | v1 ☑ 5.12-rc1 | [PatchWork 1/4](https://lore.kernel.org/lkml/1612296553-21962-9-git-send-email-kan.liang@linux.intel.com) | + + +### 11.8.2 metricsgroup topdown +------- + +| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | +|:----:|:----:|:---:|:----:|:---------:|:----:| +| 2017/08/31 | Andi Kleen | [Support standalone metrics and metric groups for perf](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=b90f1333ef08d2a497ae239798868b046f4e3a97) | 向 perf-stat 添加对 JSON 文件中指定的独立度量 metrics 的支持. 度量 metrics 使用多个事件来计算更高级别结果 (例如 IPC, TOPDOWN 等) 的公式. 对于更复杂的度量(比如 pipeline, TOPDOWN), 需要具有特定于微架构的配置, 因此将度量 metrics 与 JSON 事件列表联系起来是有意义的. 以前的度量始终与事件关联, 并随该事件自动启用. 但现在改变它, 可以有独立的指标. 它们与事件处于相同的 JSON 数据结构中, 但没有事件名称, 只有度量名称. 同时允许在度量组中组织度量, 这允许一次选择几个相关度量的快捷方式. | v3 ☑✓ 4.15-rc1 | [LORE v3,0/11](https://lore.kernel.org/all/20170831194036.30146-2-andi@firstfloor.org) | +| 2017/08/31 | Andi Kleen | [perf arm64 metricgroup support](https://lore.kernel.org/all/20170831194036.30146-1-andi@firstfloor.org) | 为 perf stat 添加[对 JSON 文件中指定的独立指标](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b18f3e365019de1a5b26a851e123f0aedcce881f) 的通用支持. 这些指标是一个公式, 它使用多个事件来计算更高级别的结果(例如 IPC, TOPDOWN 分析等). 添加一个新的 `-M /--metrics` 选项来添加指定的度量或度量组. 并增加了对 Intel X86 平台的支持. 通过这些 JSON 文件定义的事件组合度量, 可以很好的支持 TOPDOWN 分析. | v3 ☑ 4.15-rc1 | [PatchWork v3,00/11](https://lore.kernel.org/all/20170831194036.30146-1-andi@firstfloor.org) | +| 2020/09/11 | Kan Liang | [TopDown metrics support for Ice Lake (perf tool)](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=328781df86fa8f9299219c74ffae876bd625c6d1) | 为 perf metrics 分析增加对 Ice Lake 的支持. 将原本 group 重命名为 topdown. | v3 ☑ 5.10-rc1 | [PatchWork v3,0/4](https://lore.kernel.org/lkml/20200911144808.27603-1-kan.liang@linux.intel.com) | +| 2021/04/07 | John Garry | [perf arm64 metricgroup support](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=0cc177cfc95d565e1a458136a592b0bd6d487db0) | perf 支持 HiSilicon hip08 平台的 topdown metric. 支持到 Level 3. 自此鲲鹏 920 的 ARM64 服务器上, 可以使用:
`sudo perf stat -M TopDownL1 sleeep 1`
来进行 TopDown 分析了. | v1 ☑ 5.13-rc1 | [PatchWork 0/5](https://patchwork.kernel.org/project/linux-arm-kernel/cover/1614784938-27080-1-git-send-email-john.garry@huawei.com)
*-*-*-*-*-*-*-*
[PatchWork v2,0/6](https://patchwork.kernel.org/project/linux-arm-kernel/cover/1616668398-144648-1-git-send-email-john.garry@huawei.com)
*-*-*-*-*-*-*-*
[PatchWork v3,0/6](https://patchwork.kernel.org/project/linux-arm-kernel/cover/1617791570-165223-1-git-send-email-john.garry@huawei.com) | +| 2022/05/28 | zhengjun | [perf vendor events intel: Add metrics for Sapphirerapids](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=1bcca2b1bd67f3c0e5c3a88ed16c6389f01a5b31) | TODO | v2 ☑✓ 5.19-rc1 | [LORE v2,0/2](https://lore.kernel.org/all/20220528095933.1784141-1-zhengjun.xing@linux.intel.com) | +| 2022/08/25 | zhengjun.xing@linux.intel.com | [perf stat: Capitalize topdown metricsnel.org/all/20220825015458.3252239-1-zhengjun.xing@linux.intel.com) | TODO | v1 ☐☑✓ | [LORE](https://lore.kernel.org/9-1-zhengjun.xing@linux.intel.com) | +| 2022/10/21 | Shang XiaoJing | [perf vendor events arm64: Fix incorrect Hisi hip08 L3 metrics](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=e9229d5b6254a75291536f582652c599957344d2) | TODO | v2 ☑✓ 6.1-rc3 | [LORE v2,0/3](https://lore.kernel.org/all/20221021105035.10000-1-shangxiaojing@huawei.com) | +| 2022/12/14 | Sandipan Das | [perf vendor events amd: Add Zen 4 events and metrics](https://lore.kernel.org/all/20221214082652.419965-1-sandipan.das@amd.com) | [Linux 6.2 Adds AMD Zen 4 Pipeline Utilization Data To Help Find Performance Bottlenecks](https://www.phoronix.com/news/LInux-6.2-AMD-Zen-4-Events) | v2 ☐☑✓ 6.2-rc1 | [LORE v2,0/4](https://lore.kernel.org/all/20221214082652.419965-1-sandipan.das@amd.com) | + + +## 11.9 # 12 KPROBE diff --git a/study/kernel/00-DESCRIPTION/LOCKING.md b/study/kernel/00-DESCRIPTION/LOCKING.md index 175db7e..f0d51af 100644 --- a/study/kernel/00-DESCRIPTION/LOCKING.md +++ b/study/kernel/00-DESCRIPTION/LOCKING.md @@ -467,6 +467,8 @@ Paul McKenney's parallel programming book, [LWN](https://lwn.net/Articles/421425 ### 12.2.1 Task/Function Flow ------- +[curated list of awesome open source workflow engines](https://github.com/meirwah/awesome-workflow-engines) + | 项目 | 描述 | |:---:|:----:| | [taskflow/taskflow](https://github.com/taskflow/taskflow) | Function Flow 并行化业界标杆, 犹他大学开发, 支持异构. [官网](https://taskflow.github.io). 论文
1. [Taskflow: A Lightweight Parallel and Heterogeneous Task Graph Computing System, TPDS 2021](https://taskflow.github.io/papers/tpds21-taskflow.pdf)
2. [Late Breaking Results: Efficient Timing Propagation with Simultaneous Structural and Pipeline Parallelisms, DAC 2022](https://tsung-wei-huang.github.io/papers/dac2022.pdf)
3. [Pipeflow: An Efficient Task-Parallel Pipeline Programming Framework using Modern C++, HPDC 2022](https://arxiv.org/abs/2202.00717)
4. [From RTL to CUDA: A GPU Acceleration Flow for RTL Simulation with Batch Stimulus, ICPP 2022](https://icpp22.gitlabpages.inria.fr/prog/) | diff --git a/study/kernel/00-DESCRIPTION/MEMORY_MANAGER.md b/study/kernel/00-DESCRIPTION/MEMORY_MANAGER.md index 981e76e..b0461d2 100644 --- a/study/kernel/00-DESCRIPTION/MEMORY_MANAGER.md +++ b/study/kernel/00-DESCRIPTION/MEMORY_MANAGER.md @@ -378,6 +378,7 @@ Linux 一开始是在一台 i386 上的机器开发的, i386 的硬件页表是 |:----:|:----:|:---:|:----:|:---------:|:----:| | 2023/01/05 | Matthew Wilcox | [Split netmem from struct page](https://patchwork.kernel.org/project/linux-mm/cover/20230105214631.3939268-1-willy@infradead.org/) | 709303 | v2 ☐☑ | [LORE v2,0/24](https://lore.kernel.org/r/20230105214631.3939268-1-willy@infradead.org)
*-*-*-*-*-*-*-*
[LORE v3,0/26](https://lore.kernel.org/r/20230111042214.907030-1-willy@infradead.org) | | 2023/02/20 | Hyeonggon Yoo <42.hyeyoo@gmail.com> | [mm/zsmalloc: Split zsdesc from struct page](https://patchwork.kernel.org/project/linux-mm/cover/20230220132218.546369-1-42.hyeyoo@gmail.com/) | 723442 | v1 ☐☑ | [LORE v1,0/25](https://lore.kernel.org/r/20230220132218.546369-1-42.hyeyoo@gmail.com) | +| 2022/11/30 | Matthew Wilcox | [Split page pools from struct page](https://patchwork.kernel.org/project/linux-mm/cover/20221130220803.3657490-1-willy@infradead.org/) | 700614 | v1 ☐☑ | [LORE v1,0/24](https://lore.kernel.org/r/20221130220803.3657490-1-willy@infradead.org) | ### 1.4.3 MEMCG Folio @@ -707,6 +708,7 @@ MTE 实现了锁和密钥访问内存. 这样在内存访问期间, 可以在内 |:----:|:----:|:---:|:----:|:---------:|:----:| | 2021/02/05 | "Kirill A. Shutemov" | [Linear Address Masking enabling](https://patchwork.kernel.org/project/linux-mm/cover/20210205151631.43511-1-kirill.shutemov@linux.intel.com) | [线性地址屏蔽(LAM)](https://software.intel.com/content/dam/develop/external/us/en/documents-tps/architecture-instruction-set-extensions-programming-reference.pdf) 修改应用于 64 位线性地址的检查, 允许软件将未翻译的地址位用于元数据. 手册参见 [ISE, Chapter 14](https://patchwork.kernel.org/project/linux-mm/cover/20210205151631.43511-1-kirill.shutemov@linux.intel.com). 代码参见 [kas/linux.git](https://git.kernel.org/pub/scm/linux/kernel/git/kas/linux.git/log/?h=lam). | RFC ☐ | [PatchWork RFC,0/9](https://patchwork.kernel.org/project/linux-mm/cover/20210205151631.43511-1-kirill.shutemov@linux.intel.com)
*-*-*-*-*-*-*-*
[LORE v1,0/8](https://lore.kernel.org/r/20220610143527.22974-1-kirill.shutemov@linux.intel.com)
*-*-*-*-*-*-*-*
[LORE v1,0/11](https://lore.kernel.org/r/20220815041803.17954-1-kirill.shutemov@linux.intel.com)
*-*-*-*-*-*-*-*
[2022/08/30 LORE v1,0/11](https://lore.kernel.org/r/20220830010104.1282-1-kirill.shutemov@linux.intel.com)
*-*-*-*-*-*-*-*
[2022/09/30 LORE v1,0/14](https://lore.kernel.org/r/20220930144758.30232-1-kirill.shutemov@linux.intel.com)
*-*-*-*-*-*-*-*
[2022/11/09 LORE v1,0/16](https://lore.kernel.org/r/20221109165140.9137-1-kirill.shutemov@linux.intel.com)
*-*-*-*-*-*-*-*
[2022/12/27 LORE v1,0/16](https://lore.kernel.org/r/20221227030829.12508-1-kirill.shutemov@linux.intel.com)
*-*-*-*-*-*-*-*
[2023.01/11 LORE v1,0/17](https://lore.kernel.org/r/20230111123736.20025-1-kirill.shutemov@linux.intel.com)
*-*-*-*-*-*-*-*
[2023/01/23 LORE v1,0/17](https://lore.kernel.org/r/20230123220500.21077-1-kirill.shutemov@linux.intel.com) | + ### 1.8.4 Mitigations ------- @@ -1668,6 +1670,10 @@ https://lore.kernel.org/patchwork/patch/46671/ https://lore.kernel.org/patchwork/patch/408914 +| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | +|:----:|:----:|:---:|:----:|:---------:|:----:| +| 2023/04/01 | Vlastimil Babka | [mm: remove all the slab allocators](https://patchwork.kernel.org/project/linux-mm/patch/20230401094658.11146-1-vbabka@suse.cz) | 由于 SLOB 的拆除正在进行中, SLAB 的拆除也在计划中, 我意识到——为什么我们应该停止拆除 SLUB? 在 2023 年, 板坯分配器的作用是什么? [RAM 尺寸越来越大, 模块越来越便宜](https://www.theregister.com/2023/03/29/dram_prices_crash). 对象构造函数的技巧在 1994 年可能很有趣, 但对当代 CPU 来说却不是. 因此, slab 分配器现在所做的只是在页面分配器上添加一层不必要的复杂性. 因此, 这组补丁尝试删除所有三个 slab 分配器, 并且 slab.h 和 mm/slab_common.c 文件中只保留一个将所有内容传递给页面分配器的层. 这将允许用户逐渐转移并直接使用页面分配器. 总结优势:
1. 需要维护的代码更少: 这个补丁删除了超过 13k 行, 如果我在这方面花了更多的时间, 以及以后随着用户从遗留层过渡, 可以删除更多的代码.
2. 简化的 MEMCG_KMEM 记帐: 虽然我很懒, 只是在这个补丁中将其标记为 BROKEN, 但既然我们使用了页面分配器, 那么使用页面 MEMCG 记帐应该是微不足道的. 每个对象的核算在过去经历了几次迭代, 而且总是很复杂, 增加了开销. 相比之下, 页面会计要简单得多.
3. 简化了 KASAN 和朋友: 在这个补丁中也很懒, 所以不能启用它们, 但应该很容易修复, 只在页面级别工作.
4. 更简单的调试: 只需使用 debug_pagealloc=on, 无需查找复杂得离谱的 slub_debug 参数的确切语法.
5. 速度: 没有测量, 但对于页面分配器, 我们有 pcplist, 所以它应该可以很好地扩展. 不需要疯狂的 SLUB 的 cmpxchg_double()疯狂. 也许那个东西现在也可以移除. | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20230401094658.11146-1-vbabka@suse.cz) | + ### 2.3.1 SLAB ------- @@ -1729,6 +1735,7 @@ Linux slab 分配器使用了这种思想和其他一些思想来构建一个在 | 2020/10/15 | Kees Cook | [Actually fix freelist pointer vs redzoning](https://lore.kernel.org/patchwork/patch/1321332) | NA | v3 ☑ 2.6.22-rc1 | [PatchWork v3,0/3](https://lore.kernel.org/patchwork/patch/1321332) | | 2021/08/23 | Vlastimil Babka | [SLUB: reduce irq disabled scope and make it RT compatible](https://lore.kernel.org/patchwork/patch/1469467) | 本系列最初是受到 Mel 的 pcplist local_lock 重写的启发, 同时也对更好地理解 SLUB 的锁以及新的原语、RT 变体和含义感兴趣. 使 SLUB 更有利于抢占, 特别是对于 RT. | v3 ☐ 5.14-rc3 | [PatchWork v3,00/35](https://patchwork.kernel.org/project/linux-mm/cover/20210729132132.19691-1-vbabka@suse.cz)
*-*-*-*-*-*-*-*
[PatchWork v5,00/35](https://patchwork.kernel.org/project/linux-mm/cover/20210823145826.3857-1-vbabka@suse.cz) | | 2021/10/12 | Vlastimil Babka | [mm, slub: change percpu partial accounting from objects to pages](https://patchwork.kernel.org/project/linux-mm/patch/20211012134651.11258-1-vbabka@suse.cz) | NA | v3 ☑ 2.6.22-rc1 | [PatchWork v6](https://lore.kernel.org/patchwork/patch/262225) | +| 2022/11/21 | Vlastimil Babka | [Introduce CONFIG_SLUB_TINY and deprecate SLOB](https://patchwork.kernel.org/project/linux-mm/cover/20221121171202.22080-1-vbabka@suse.cz/)| 697743 | v1 ☐☑ | [LORE v1,0/12](https://lore.kernel.org/r/20221121171202.22080-1-vbabka@suse.cz) | SLUB 这是第二个对象分配器实现. 引入这个新的实现的原因是 SLAB 存在的一些问题. 比如 NUMA 的支持, SLAB 引入时内核还没支持 NUMA, 因此, 一开始就没把 NUMA 的需求放在设计理念里, 结果导致后来的对 NUMA 的支持比较臃肿奇怪, 一个典型的问题是, SLAB 为追踪这些缓存, 在每个 CPU, 每个 node, 上都维护着对象队列. 同时, 为了满足 NUMA 分配的局部性, 每个 node 上还维护着所有其他 node 上的队列, 这样导致 SLAB 内部为维护这些队列就得花费大量的内存空间, 并且是 O(n^2) 级别的. 这在大规模的 NUMA 机器上, 浪费的内存相当可观. 同时, 还有别的一些使用上的问题, 导致开发者对其不满, 因而引入了新的实现. 参见 [The SLUB allocator](https://lwn.net/Articles/229984). @@ -1750,7 +1757,7 @@ SLUB 在解决了上述的问题之上, 提供与 SLAB 完全一样的接口, |:----:|:----:|:---:|:----:|:---------:|:----:| | 2005/11/03 | Matt Mackall | [slob: introduce the SLOB allocator](https://lore.kernel.org/patchwork/patch/45623) | 实现 SLOB 分配器 | v2 ☑ 2.6.16-rc1 | [PatchWork v2](https://lore.kernel.org/patchwork/patch/45623) | | 2021/10/18 | Matt Mackall | [slob: add size header to all allocations](https://patchwork.kernel.org/project/linux-mm/patch/20211018033841.3027515-1-rkovhaev@gmail.com) | 在所有分配的 (PAGE_SIZE - align_offset) 和 less 前面加上 size 头. 这样, kfree() 和 kfree() 都可以释放 kmem_cache_alloc() 内存, 只要它们小于 (PAGE_SIZE - align_offset). 这个更改的主要原因是稍微简化了 SLOB, 使它在出现问题时更容易调试. | v1 ☐ | [PatchWork v2](https://patchwork.kernel.org/project/linux-mm/patch/20211018033841.3027515-1-rkovhaev@gmail.com)
*-*-*-*-*-*-*-*
[PatchWork v4](https://patchwork.kernel.org/project/linux-mm/patch/20211122013026.909933-1-rkovhaev@gmail.com) | -| 2023/03/10 | Vlastimil Babka | [remove SLOB and allow kfree() with kmem_cache_alloc()](https://lore.kernel.org/all/20230310103210.22372-1-vbabka@suse.cz) | 不再推荐 SLOB 作为简单的分配器. SLOB 分配程序的设计目的是提高空间效率, 但却不具有可伸缩性. 参见 phoronix 报道 [Linux 6.4 Looking To Drop The SLOB Memory Allocator](https://www.phoronix.com/news/Linux-6.4-Looks-To-Drop-SLOB). | v1 ☐☑✓ | [LORE v1,0/7](https://lore.kernel.org/all/20230310103210.22372-1-vbabka@suse.cz) | +| 2023/03/10 | Vlastimil Babka | [remove SLOB and allow kfree() with kmem_cache_alloc()](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=ae65a5211d90e54ae604012ce9cf234c48780929) | 不再推荐 SLOB 作为简单的分配器. SLOB 分配程序的设计目的是提高空间效率, 但却不具有可伸缩性. 参见 phoronix 报道 [Linux 6.4 Looking To Drop The SLOB Memory Allocator](https://www.phoronix.com/news/Linux-6.4-Looks-To-Drop-SLOB). | v1 ☑✓ 6.4-rc1 | [LORE v1,0/7](https://lore.kernel.org/all/20230310103210.22372-1-vbabka@suse.cz)
*-*-*-*-*-*-*-*
[LORE v2,0/6](https://lore.kernel.org/all/20230317104307.29328-1-vbabka@suse.cz) | @@ -3391,7 +3398,7 @@ MGLRU 合入后, 引起了不少场景的性能劣化, 参见 phoronix 报道 [A | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | |:----:|:----:|:---:|:----:|:---------:|:----:| -| 2022/04/07 | Yu Zhao | [Multigenerational LRU Framework(https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=8be976a0937a18118424dd2505925081d9192fd5) | Multi-Gen LRU Framework, 将 LRU 的列表划分为多代老化. 通过 CONFIG_LRU_GEN 来控制. | v15 ☑ v6.1 | [Patchwork v1,00/14](https://lore.kernel.org/patchwork/patch/1394674)
*-*-*-*-*-*-*-*
[PatchWork v2,00/16](https://lore.kernel.org/patchwork/patch/1412560)
*-*-*-*-*-*-*-*
[2021/05/20 PatchWork v3,00/14](https://patchwork.kernel.org/project/linux-mm/cover/20210520065355.2736558-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[2021/08/18 PatchWork v4,00/11](https://patchwork.kernel.org/project/linux-mm/cover/20210818063107.2696454-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[2021/11/11 PatchWork v5,00/10](https://patchwork.kernel.org/project/linux-mm/cover/20211111041510.402534-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[2022/01/04 PatchWork v6,0/9](https://patchwork.kernel.org/project/linux-mm/cover/20220104202227.2903605-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[2022/02/08 PatchWork v7,0/12](https://lore.kernel.org/all/20220208081902.3550911-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[2022/03/08 LORE v8,0/14](https://lore.kernel.org/all/20220308234723.3834941-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[2022/03/09 LORE v9,0/14](https://lore.kernel.org/all/20220309021230.721028-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[2022/04/07 LORE,v10,00/14](https://lore.kernel.org/lkml/20220407031525.2368067-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[LORE v11,00/14](https://lore.kernel.org/lkml/20220518014632.922072-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[LORE v12,00/14](https://lore.kernel.org/lkml/20220614071650.206064-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[LORE v13,00/14](https://lore.kernel.org/lkml/20220706220022.968789-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[LORE v14,00/14](https://lore.kernel.org/lkml/20220815071332.627393-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[LORE v15,0/14](https://lore.kernel.org/r/20220918080010.2920238-1-yuzhao@google.com) | +| 2022/04/07 | Yu Zhao | [Multigenerational LRU Framework](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=8be976a0937a18118424dd2505925081d9192fd5) | Multi-Gen LRU Framework, 将 LRU 的列表划分为多代老化. 通过 CONFIG_LRU_GEN 来控制. | v15 ☑ v6.1 | [Patchwork v1,00/14](https://lore.kernel.org/patchwork/patch/1394674)
*-*-*-*-*-*-*-*
[PatchWork v2,00/16](https://lore.kernel.org/patchwork/patch/1412560)
*-*-*-*-*-*-*-*
[2021/05/20 PatchWork v3,00/14](https://patchwork.kernel.org/project/linux-mm/cover/20210520065355.2736558-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[2021/08/18 PatchWork v4,00/11](https://patchwork.kernel.org/project/linux-mm/cover/20210818063107.2696454-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[2021/11/11 PatchWork v5,00/10](https://patchwork.kernel.org/project/linux-mm/cover/20211111041510.402534-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[2022/01/04 PatchWork v6,0/9](https://patchwork.kernel.org/project/linux-mm/cover/20220104202227.2903605-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[2022/02/08 PatchWork v7,0/12](https://lore.kernel.org/all/20220208081902.3550911-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[2022/03/08 LORE v8,0/14](https://lore.kernel.org/all/20220308234723.3834941-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[2022/03/09 LORE v9,0/14](https://lore.kernel.org/all/20220309021230.721028-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[2022/04/07 LORE,v10,00/14](https://lore.kernel.org/lkml/20220407031525.2368067-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[LORE v11,00/14](https://lore.kernel.org/lkml/20220518014632.922072-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[LORE v12,00/14](https://lore.kernel.org/lkml/20220614071650.206064-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[LORE v13,00/14](https://lore.kernel.org/lkml/20220706220022.968789-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[LORE v14,00/14](https://lore.kernel.org/lkml/20220815071332.627393-1-yuzhao@google.com)
*-*-*-*-*-*-*-*
[LORE v15,0/14](https://lore.kernel.org/r/20220918080010.2920238-1-yuzhao@google.com) | | 2022/09/11 | Yuanchu Xie | [mm: multi-gen LRU: per-process heatmaps](https://patchwork.kernel.org/project/linux-mm/cover/20220911083418.2818369-1-yuanchu@google.com/) | MGLRU debugfs 接口(`/sys/kernel/debug/lru_gen`) 提供了一个统计属于每一代的页面数量的直方图, 提供了一些内存冷量数据, 但我们实际上不知道内存实际在哪里, 通过 BPF 程序连接到 MGLRU 页表访问位获取, 以收集有关相对 HOT 和 COLD、NUMA 节点以及页是否为 anon/file 等的信息. 使用 BPF 程序收集和聚合页面访问信息允许用户空间代理自定义收集什么以及如何聚合. 它可以关注特定的兴趣区域, 并计算移动平均访问频率, 或者找到从未访问过的分配, 这些分配可以一起消除. 目前, MGLRU 依赖于关于页面被分配到哪一代的启发式方法, 例如, 通过页面表访问的页面总是被分配给最年轻的一代. 公开页面访问数据可以允许未来的工作自定义页面生成分配(使用更多 BPF). | v1 ☐☑ | [LORE v1,0/2](https://lore.kernel.org/all/20220911083418.2818369-1-yuanchu@google.com) | | 2022/09/18 | Yu Zhao | [[v14-fix,01/11] mm: multi-gen LRU: update admin guide](https://patchwork.kernel.org/project/linux-mm/patch/20220918204755.3135720-1-yuzhao@google.com/) | 677981 | v1 ☐☑ | [LORE v1,0/11](https://lore.kernel.org/r/20220918204755.3135720-1-yuzhao@google.com) | | 2022/09/20 | zhaoyang.huang | [[RFC] mm: track bad page via kmemleak](https://patchwork.kernel.org/project/linux-mm/patch/1663679468-16757-1-git-send-email-zhaoyang.huang@unisoc.com/) | 678650 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/1663679468-16757-1-git-send-email-zhaoyang.huang@unisoc.com) | @@ -4080,6 +4087,8 @@ Google 的 Yosry Ahmed 设计的 [memcg: introduce per-memcg proactive reclaim]( | 2022/04/16 | Davidlohr Bueso | [Mechanism to induce memory reclaim](https://lore.kernel.org/all/5df21376-7dd1-bf81-8414-32a73cea45dd@google.com) | LSFMM 2022 | v1 ☐☑ | [LORE RFC v1,0/6](https://lore.kernel.org/all/5df21376-7dd1-bf81-8414-32a73cea45dd@google.com) | | 2022/05/18 | Vaibhav Jain | [memcg: provide reclaim stats via'memory.reclaim'](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=eae3cb2e87ff84547e66211b81301a8f9122840f) | 之前引入的 memcg 文件 memory.reclaim 是只写的, 为用户空间提供了一种触发主动回收的方法. 然而, 像扫描和回收的页面数量这样的回收统计仍然不能直接提供给用户空间. 这个补丁将 memory.reclaim 扩展为可读, 它从与每个 memcg 相关的 'struct vmpressure' 回收过程中返回扫描 / 回收的页面数量. 这将让用户空间评估如何成功地从 memcg 的内存中触发主动回收. | v1 ☐☑ 5.19-rc1 | [LORE v1,0/1](https://lore.kernel.org/r/20220518223815.809858-1-vaibhav@linux.ibm.com) | | 2022/12/02 | Mina Almasry | [mm: Add nodes= arg to memory.reclaim](https://lore.kernel.org/all/20221202223533.1785418-1-almasrymina@google.com) | nodes=arg 指示内核仅扫描给定节点以进行主动回收.
"nodes"参数用于允许用户空间根据其策略独立控制降级和回收: 如果内存. 在具有降级目标的节点上调用回收, 它将首先尝试降级;
如果在没有降级目标的节点上调用它, 它将只尝试回收. | v3 ☐☑✓ | [LORE](https://lore.kernel.org/all/20221202223533.1785418-1-almasrymina@google.com)
*-*-*-*-*-*-*-*
[LORE v2,0/1](https://lore.kernel.org/r/20221130020328.1009347-1-almasrymina@google.com)
*-*-*-*-*-*-*-*
[LORE v3,0/1](https://lore.kernel.org/r/20221202223533.1785418-1-almasrymina@google.com) | +| 2023/02/02 | Yosry Ahmed | [Ignore non-LRU-based reclaim in memcg reclaim](https://patchwork.kernel.org/project/linux-mm/cover/20230202233229.3895713-1-yosryahmed@google.com/) | 在使用 memory.reclaim 运行一些主动回收测试时, 我们注意到一些测试出现了问题: 即使我们没有完全回收请求的数量, 写入 memory.reclain 也会成功. 分析发现存在过度报告 MEMCG 回收中回收的页面数量. 通过基于 LRU 的回收以外的其他方式回收的页面, 通过 task_struct->structscan_control 中的回收状态进行跟踪. 这些页面通过 LRU 添加到回收页面的数量中. 对于 memcg 回收, 这些页面通常无法链接到回收下的 MEMCG, 并且可能导致回收页面的数量被高估. 这组补丁试图解决这个问题.
补丁 1-2 只是重构, 它们添加了一些辅助程序, 这些辅助程序包装了当前回收状态上的一些操作, 并重命名 reclaim_state->reclaimed_slab 为 reclaim_state->reclaimed. 核心补丁 3 会忽略 MEMCG 回收中在 LRU 回收之外回收的页面. 无论如何, 这些页面都是 uncharged 的, 所以即使我们最终少报了回收的页面, 我们仍然会在 charging 过程中取得进展. | v1 ☐☑ | [LORE v1,0/2](https://lore.kernel.org/r/20230202233229.3895713-1-yosryahmed@google.com)
*-*-*-*-*-*-*-*
[LORE v1,0/2](https://lore.kernel.org/r/20230228085002.2592473-1-yosryahmed@google.com)
*-*-*-*-*-*-*-*
[LORE v2,0/3](https://lore.kernel.org/r/20230309093109.3039327-1-yosryahmed@google.com)
*-*-*-*-*-*-*-*
[LORE v3,0/3](https://lore.kernel.org/r/20230331070818.2792558-1-yosryahmed@google.com) | +| 2022/11/10 | Lu Jialin | [mm/memcontrol.c: drains percpu charge caches in memory.reclaim](https://patchwork.kernel.org/project/linux-mm/patch/20221110065316.67204-1-lujialin4@huawei.com) | 当用户使用 memory.reclaim 回收内存时, 在耗尽 percpu-lru 缓存后, 通过 drain_all_stock() 释放 percpu 对给定 memcg 库存的缓存, 以期引入更多可收回的页面. | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221110065316.67204-1-lujialin4@huawei.com) | ### 4.4.4 主动回收与内存分级 @@ -4449,6 +4458,7 @@ Linux 内核在脏页数量到达一定门槛时, 或者用户在命令行输入 |:----:|:----:|:---:|:----:|:---------:|:----:| | 2021/07/13 | Jan Kara | [writeback: Fix bandwidth estimates](https://patchwork.kernel.org/project/linux-mm/cover/20210712165811.13163-1-jack@suse.cz) | NA | v2 ☐ | [PatchWork 0/5,v2](https://patchwork.kernel.org/project/linux-mm/cover/20210712165811.13163-1-jack@suse.cz) | | 2011/08/10 | Mel Gorman | [Reduce filesystem writeback from page reclaim v3](https://lore.kernel.org/all/1312973240-32576-1-git-send-email-mgorman@suse.de) | 1312973240-32576-1-git-send-email-mgorman@suse.de | v3 ☐☑✓ | [LORE v3,0/7](https://lore.kernel.org/all/1312973240-32576-1-git-send-email-mgorman@suse.de) | +| 2022/11/15 | Nhat Pham | [cachestat: a new syscall for page cache state of files](https://patchwork.kernel.org/project/linux-mm/cover/20221115182901.2755368-1-nphamcs@gmail.com/) | 内核中的 page cache 会将文件的 page 保存在 RAM 中, 让这些 page 可以不需要每次都要浪费从持久性存储设备上读取的时间就可以直接访问到. 应用程序通常完全不知道 page cache 的相关行为;它加快了速度, 这是最重要的一点. 不过, 有些应用程序可以从了解某个文件某一时刻有多少在 page cache 中, 从而得到一些改善. Nhat Pham 提出的 cachestat() 系统调用就是一系列尝试中的最新成果, 从而可以将这些信息提供出来. 参见 LWN 报道 [Checking page-cache status with cachestat()](https://lwn.net/Articles/917096) | v1 ☐☑ | [LORE v1,0/4](https://lore.kernel.org/r/20221115182901.2755368-1-nphamcs@gmail.com)
*-*-*-*-*-*-*-*
[LORE v2,0/4](https://lore.kernel.org/r/20221205175140.1543229-1-nphamcs@gmail.com)
*-*-*-*-*-*-*-*
[LORE v3,0/4](https://lore.kernel.org/r/20221208223104.1554368-1-nphamcs@gmail.com)
*-*-*-*-*-*-*-*
[LORE v4,0/4](https://lore.kernel.org/r/20221216192149.3902877-1-nphamcs@gmail.com)
*-*-*-*-*-*-*-*
[LORE v5,0/3](https://lore.kernel.org/r/20230104231127.2634648-1-nphamcs@gmail.com)
*-*-*-*-*-*-*-*
[LORE v7,0/3](https://lore.kernel.org/all/20230124021118.154078-1-nphamcs@gmail.com)
*-*-*-*-*-*-*-*
[LORE v8,0/3](https://lore.kernel.org/r/20230126175356.1582123-1-nphamcs@gmail.com) | @@ -4842,7 +4852,7 @@ Google 的工程师 Mina Almasry 提出了一种新的思路, 通过 [mremap 的 | 2022/03/18 | Muchun Song | [add hugetlb_free_vmemmap sysctl](https://patchwork.kernel.org/project/linux-mm/cover/20220307130708.58771-1-songmuchun@bytedance.com/) | 621009 | v3 ☐☑ | [2022/03/07 LORE v3,0/4](https://lore.kernel.org/r/20220307130708.58771-1-songmuchun@bytedance.com)
*-*-*-*-*-*-*-*
[2022/03/18 LORE v4,0/4](https://lore.kernel.org/r/20220318100720.14524-1-songmuchun@bytedance.com) | | 2022/04/12 | Muchun Song | [add hugetlb_optimize_vmemmap sysctl](https://patchwork.kernel.org/project/linux-mm/cover/20220412111434.96498-1-songmuchun@bytedance.com/) | 631440 | v7 ☐☑ | [LORE v7,0/4](https://lore.kernel.org/r/20220412111434.96498-1-songmuchun@bytedance.com)
*-*-*-*-*-*-*-*
[LORE v8,0/4](https://lore.kernel.org/r/20220413144748.84106-1-songmuchun@bytedance.com)
*-*-*-*-*-*-*-*
[LORE v9,0/4](https://lore.kernel.org/r/20220429121816.37541-1-songmuchun@bytedance.com)
*-*-*-*-*-*-*-*
[LORE v10,0/4](https://lore.kernel.org/r/20220509062703.64249-1-songmuchun@bytedance.com) | | 2022/06/28 | Muchun Song | [Simplify hugetlb vmemmap and improve its readability](https://lore.kernel.org/all/20220628092235.91270-1-songmuchun@bytedance.com) | TODO | v2 ☐☑✓ | [LORE 0/6](https://lore.kernel.org/lkml/20220613063512.17540-1-songmuchun@bytedance.com)
*-*-*-*-*-*-*-*
[LORE v2,0/8](https://lore.kernel.org/all/20220628092235.91270-1-songmuchun@bytedance.com) | -| 2022/08/02 | Joao Martins | [[v1] mm/hugetlb_vmemmap: remap head page to newly allocated page](https://patchwork.kernel.org/project/linux-mm/patch/20220802180309.19340-1-joao.m.martins@oracle.com/) | 664896 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20220802180309.19340-1-joao.m.martins@oracle.com) | +| 2022/08/02 | Joao Martins | [[v1] mm/hugetlb_vmemmap: remap head page to newly allocated page](https://patchwork.kernel.org/project/linux-mm/patch/20220802180309.19340-1-joao.m.martins@oracle.com/) | 664896 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20220802180309.19340-1-joao.m.martins@oracle.com)
*-*-*-*-*-*-*-*
[LORE v3,0/1](https://lore.kernel.org/r/20221109200623.96867-1-joao.m.martins@oracle.com)
*-*-*-*-*-*-*-*
[LORE v4,0/1](https://lore.kernel.org/r/20221110121214.6297-1-joao.m.martins@oracle.com) | ### 7.1.11 HugeTLB High-Granularity Mapping @@ -5065,7 +5075,7 @@ David Rientjes 率先提出了这种想法 [Hugepage collapse in process context | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | |:----:|:----:|:---:|:----:|:---------:|:----:| | 2022/03/11 | maobibo | [mm/khugepaged: sched to numa node when collapse huge page](https://patchwork.kernel.org/project/linux-mm/patch/20220311090119.2412738-1-maobibo@loongson.cn/) | 622550 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20220311090119.2412738-1-maobibo@loongson.cn)
*-*-*-*-*-*-*-*
[LORE v2,0/1](https://lore.kernel.org/r/20220315040549.4122396-1-maobibo@loongson.cn) | -| 2022/05/27 | Jiaqi Yan | [Memory poison recovery in khugepaged collapsing](https://patchwork.kernel.org/project/linux-mm/cover/20220527190731.322722-1-jiaqiyan@google.com/) | 645671 | v4 ☐☑ | [LORE v4,0/2](https://lore.kernel.org/r/20220527190731.322722-1-jiaqiyan@google.com)
*-*-*-*-*-*-*-*
[LORE v6,0/2](https://lore.kernel.org/r/20221107025359.2911028-1-jiaqiyan@google.com)
*-*-*-*-*-*-*-*
[LORE v7,0/2](https://lore.kernel.org/r/20221118013157.1333622-1-jiaqiyan@google.com)
*-*-*-*-*-*-*-*
[LORE v8,0/2](https://lore.kernel.org/r/20221201005931.3877608-1-jiaqiyan@google.com)
*-*-*-*-*-*-*-*
[LORE v9,0/2](https://lore.kernel.org/r/20221205234059.42971-1-jiaqiyan@google.com) | +| 2022/05/27 | Jiaqi Yan | [Memory poison recovery in khugepaged collapsing](https://patchwork.kernel.org/project/linux-mm/cover/20220527190731.322722-1-jiaqiyan@google.com/) | 645671 | v4 ☐☑ | [LORE v4,0/2](https://lore.kernel.org/r/20220527190731.322722-1-jiaqiyan@google.com)
*-*-*-*-*-*-*-*
[LORE v6,0/2](https://lore.kernel.org/r/20221107025359.2911028-1-jiaqiyan@google.com)
*-*-*-*-*-*-*-*
[LORE v7,0/2](https://lore.kernel.org/r/20221118013157.1333622-1-jiaqiyan@google.com)
*-*-*-*-*-*-*-*
[LORE v8,0/2](https://lore.kernel.org/r/20221201005931.3877608-1-jiaqiyan@google.com)
*-*-*-*-*-*-*-*
[LORE v9,0/2](https://lore.kernel.org/r/20221205234059.42971-1-jiaqiyan@google.com)
*-*-*-*-*-*-*-*
[LORE v11,0/3](https://lore.kernel.org/r/20230327211548.462509-1-jiaqiyan@google.com)
*-*-*-*-*-*-*-*
[LORE v12,0/3](https://lore.kernel.org/r/20230329151121.949896-1-jiaqiyan@google.com) | | 2022/09/07 | Zach O'Keefe | [mm: add file/shmem support to MADV_COLLAPSE](https://lore.kernel.org/all/20220907144521.3115321-1-zokeefe@google.com) | TODO | v3 ☐☑✓ | [2022/08/12 LORE 0/9](https://lore.kernel.org/linux-mm/20220812012843.3948330-1-zokeefe@google.com)
*-*-*-*-*-*-*-*
[2022/08/26 LORE v2,0/9](https://lore.kernel.org/linux-mm/20220826220329.1495407-1-zokeefe@google.com)
*-*-*-*-*-*-*-*
[2022/09/07 LORE v3,0/10](https://lore.kernel.org/all/20220907144521.3115321-1-zokeefe@google.com)
*-*-*-*-*-*-*-*
[2022/09/22 LORE v4,00/10](https://lore.kernel.org/all/20220922224046.1143204-1-zokeefe@google.com) | | 2022/10/17 | Zach O'Keefe | [Add MADV_COLLAPSE documentation](https://patchwork.kernel.org/project/linux-mm/cover/20221017175523.2048887-1-zokeefe@google.com/) | 685929 | v1 ☐☑ | [LORE v1,0/4](https://lore.kernel.org/r/20221017175523.2048887-1-zokeefe@google.com)
*-*-*-*-*-*-*-*
[LORE v2,0/4](https://lore.kernel.org/r/20221018235051.152548-1-zokeefe@google.com)
*-*-*-*-*-*-*-*
[LORE v3,0/4](https://lore.kernel.org/r/20221021223300.3675201-1-zokeefe@google.com)
*-*-*-*-*-*-*-*
[LORE v4,0/1](https://lore.kernel.org/r/20221031225500.3994542-1-zokeefe@google.com)
*-*-*-*-*-*-*-*
[LORE v5,0/1](https://lore.kernel.org/r/20221101150323.89743-1-zokeefe@google.com) | @@ -5332,6 +5342,14 @@ khugepaged 处理流程 |:---:|:----:|:---:|:----:|:---------:|:----:| | 2022/09/21 | Rongwei Wang | [[RFC] mm/khugepaged: Improve awareness for exiting processes](https://patchwork.kernel.org/project/linux-mm/patch/20220921032759.41473-1-rongwei.wang@linux.alibaba.com/) | 678876 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20220921032759.41473-1-rongwei.wang@linux.alibaba.com) | +* Improve awareness for exiting processe + +| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | +|:---:|:----:|:---:|:----:|:---------:|:----:| +| 2013/11/12 | Bob Liu | [mm: thp: khugepaged: add policy for finding target node](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9f1b868a13ac36bd207a571f5ea1193d823ab18d) | Khugepaged 将扫描 / 释放 HPAGE_PMD_NR 正常页面, 并替换为从第一个扫描的正常页面的节点分配的 hugepage, 但此策略过于粗糙, 可能会破坏所有节点之间的原始页面平衡.
1. 问题 1, 如果第一个扫描的正常页面是从节点 A 分配的, 那么大多数其他扫描的正常页都是从节点 B 或 C 分配的. 但是 hugepage 总是从节点 A 中分配 hugepage, 这会给节点 A 带来额外的内存压力. 通过让 khugepaged 从扫描正常页面的最大记录命中的节点分配 hugepage 来解决这个问题, 这样可以最大限度地减少对原始页面平衡的影响.
2. 问题 2, 如果从节点 A、B 和 C 平均分配正常扫描的页面, 则在 khugepaged 启动后, 节点 A 仍将承受额外的内存压力. 这组补丁通过从具有相同记录的所有节点分配 hugepage 循环来解决此问题. | v1 ☐☑ | [COMMIT](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9f1b868a13ac36bd207a571f5ea1193d823ab18d) | +| 2022/11/03 | Yang Shi | [[v2,1/2] mm: khugepaged: allow page allocation fallback to eligible nodes](https://patchwork.kernel.org/project/linux-mm/patch/20221103213641.7296-1-shy828301@gmail.com/) | khugepaged 代码会选择命中率最高的节点作为首选节点, 如果几个节点有相同的命中记录, 也会尝试进行一些平衡. 但有一种极端情况, 与 MADV_COLLAPSE 类似, 即不存在的节点可能会被返回为首选节点. 因此, 使用 nodemask 来记录具有相同命中记录的节点, 这样大容量分配可以回退到这些节点. 此补丁删除了 `__GFP_THESNODE`, 因为如果 nodemask 为空(没有设置节点), 这意味着有一个节点具有最多的历史记录, 那么 nodemask 方法实际上的行为类似于 `__GFP_THESNODE`. | v2 ☐☑ | [LORE v2,0/2](https://lore.kernel.org/r/20221103213641.7296-1-shy828301@gmail.com) | + + #### 7.2.9.3 khugepaged 的其他优化 ------- @@ -5340,6 +5358,7 @@ khugepaged 处理流程 | 2022/10/24 | Gautam Menghani | [mm/khugepaged: add tracepoint to collapse_file()](https://patchwork.kernel.org/project/linux-mm/patch/20221024150922.129814-1-gautammenghani201@gmail.com/) | 688257 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221024150922.129814-1-gautammenghani201@gmail.com)
*-*-*-*-*-*-*-*
[LORE v4,0/1](https://lore.kernel.org/r/20221202201807.182829-1-gautammenghani201@gmail.com) | | 2022/10/25 | Nathan Chancellor | [mm/khugepaged: Initialize index and nr in collapse_file()](https://patchwork.kernel.org/project/linux-mm/patch/20221025173407.3423241-1-nathan@kernel.org/) | 688749 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221025173407.3423241-1-nathan@kernel.org) | | 2022/10/26 | Johannes Weiner | [[v2] mm: vmscan: split khugepaged stats from direct reclaim stats](https://patchwork.kernel.org/project/linux-mm/patch/20221026180133.377671-1-hannes@cmpxchg.org/) | 689123 | v2 ☐☑ | [LORE v2,0/1](https://lore.kernel.org/r/20221026180133.377671-1-hannes@cmpxchg.org) | +| 2022/11/25 | Jann Horn | [[v3,1/3] mm/khugepaged: Take the right locks for page table retraction](https://patchwork.kernel.org/project/linux-mm/patch/20221125213714.4115729-1-jannh@google.com/) | 可以在 mmap 锁、附加到 vma 的 anon_vm 的锁或 vma 的 address_space 的锁下对 vma 映射的地址范围进行分页表遍历. 只需要持有其中一个, 并且不需要以独占模式持有. | v3 ☐☑ | [LORE v3,0/3](https://lore.kernel.org/r/20221125213714.4115729-1-jannh@google.com)
*-*-*-*-*-*-*-*
[LORE v4,0/3](https://lore.kernel.org/r/20221128180252.1684965-1-jannh@google.com) |[LORE v4,0/3](https://lore.kernel.org/r/20221128180252.1684965-1-jannh@google.com)
*-*-*-*-*-*-*-*
[LORE v5,0/3](https://lore.kernel.org/r/20221129154730.2274278-1-jannh@google.com) | ## 7.3 复合页 Compound Page @@ -5367,10 +5386,21 @@ mcpage 有成本. 除了 THP 没有带来 TLB 的好处之外, 与 4K 基本页 本系列是 mcpage 的第一步. 未来的工作可以为更多组件启用 mcpage, 如页面缓存、交换等. 最后, 系统中的大多数页面将按 mcpage 顺序分配 / 释放 / 回收. + | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | |:----:|:----:|:---:|:----:|:---------:|:----:| | 2023/01/09 | Yin, Fengwei | [Multiple consecutive page for anonymous mapping](https://patchwork.kernel.org/project/linux-mm/cover/20230109072232.2398464-1-fengwei.yin@intel.com/) | 709978 | v1 ☐☑ | [LORE v1,0/4](https://lore.kernel.org/r/20230109072232.2398464-1-fengwei.yin@intel.com) | +## 7.4 大页基础 +------- + +### 7.4.1 Huge Page Clearing +------- + +| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | +|:----:|:----:|:---:|:----:|:---------:|:----:| +| 2022/06/06 | Ankur Arora | [huge page clearing optimizations](https://lore.kernel.org/all/20220606202109.1306034-1-ankur.a.arora@oracle.com) | 本系列在巨大的页面清除路径中引入了两个优化:
1. 扩展 clear_page() 机制以处理大于单个页面的扩展数据块.
2. 支持对巨大页面和巨型页面进行非缓存页面清理.
第一个优化对于大页面故障处理很有用,第二个优化对于预处理或巨大页面很有用.
直接的动机是加速创建由巨大页面支持的大型虚拟机. | v3 ☐☑✓ | [LORE v3,0/21](https://lore.kernel.org/all/20220606202109.1306034-1-ankur.a.arora@oracle.com) | +| 2023/04/02 | Ankur Arora | [x86/clear_huge_page: multi-page clearing](https://lore.kernel.org/all/20230403052233.1880567-1-ankur.a.arora@oracle.com) | 本系列将介绍针对大页面的多页清除. [参见之前讨论](https://lore.kernel.org/lkml/CAHk-=wj9En-BC4t7J9xFZOws5ShwaR9yor7FxHZr8CTVyEP_+Q@mail.gmail.com). 在 x86 上, 页面清除通常是通过字符串指令完成的. 与 MOV 循环不同的是, 这些循环允许我们显式地向处理器通告区域大小, 这可以作为 uarch 省略 cacheline 分配的提示. 但是也存在一些问题, 延长的归零周期意味着由于缺少抢占点而增加的延迟. | v1 ☐☑✓ | [LORE v1,0/9](https://lore.kernel.org/all/20230403052233.1880567-1-ankur.a.arora@oracle.com) | # 8 进程虚拟地址空间(VMA) @@ -5571,6 +5601,7 @@ Dirty COW(CVE-2016-5195) 是近几年影响比较严重的问题, 参见 [Dirty | 2023/02/13 | Muhammad Usama Anjum | [[v2,1/2] mm/userfaultfd: Support WP on multiple VMAs](https://patchwork.kernel.org/project/linux-mm/patch/20230213163124.2850816-1-usama.anjum@collabora.com/) | 721349 | v2 ☐☑ | [LORE v2,0/2](https://lore.kernel.org/r/20230213163124.2850816-1-usama.anjum@collabora.com)
*-*-*-*-*-*-*-*
[LORE v3,0/2](https://lore.kernel.org/r/20230216064155.1500545-1-usama.anjum@collabora.com)
*-*-*-*-*-*-*-*
[LORE v5,0/1](https://lore.kernel.org/r/20230217105558.832710-1-usama.anjum@collabora.com) | | 2023/02/14 | Axel Rasmussen | [mm: userfaultfd: add UFFDIO_CONTINUE_MODE_WP to install WP PTEs](https://patchwork.kernel.org/project/linux-mm/patch/20230214215046.1187635-1-axelrasmussen@google.com/) | 721865 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20230214215046.1187635-1-axelrasmussen@google.com) | | 2023/02/15 | Peter Xu | [mm/uffd: UFFD_FEATURE_WP_ZEROPAGE](https://patchwork.kernel.org/project/linux-mm/patch/20230215210257.224243-1-peterx@redhat.com/) | 722253 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20230215210257.224243-1-peterx@redhat.com) | +| 2022/12/08 | David Hildenbrand | [[v1] mm/userfaultfd: enable writenotify while userfaultfd-wp is enabled for a VMA](https://patchwork.kernel.org/project/linux-mm/patch/20221208114137.35035-1-david@redhat.com/) | 702923 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221208114137.35035-1-david@redhat.com)
*-*-*-*-*-*-*-*
[LORE v2,0/1](https://lore.kernel.org/r/20221209080912.7968-1-david@redhat.com) | ### 8.2.5 MMAP Locking Scalability @@ -5687,7 +5718,10 @@ VMA 的读锁定是使用两个序列号完成的: 一个在 vm_area_struct 中, | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | |:----:|:----:|:---:|:----:|:---------:|:----:| | 2022/08/29 | Suren Baghdasaryan | [per-VMA locks proposal](https://lore.kernel.org/all/20220829212531.3184856-1-surenb@google.com) | TODO | v1 ☐☑✓ | [2022/08/29 LORE v1,0/28](https://lore.kernel.org/all/20220829212531.3184856-1-surenb@google.com)
*-*-*-*-*-*-*-*
[2022/09/01 LORE v1,0/28](https://lore.kernel.org/all/20220901173516.702122-1-surenb@google.com) | -| 2023/01/09 | Suren Baghdasaryan | [Per-VMA locks](https://patchwork.kernel.org/project/linux-mm/cover/20230109205336.3665937-1-surenb@google.com/) | 710245 | v1 ☐☑ | [LORE v1,0/41](https://lore.kernel.org/r/20230109205336.3665937-1-surenb@google.com)
*-*-*-*-*-*-*-*
[LORE v2,0/33](https://lore.kernel.org/r/20230127194110.533103-1-surenb@google.com)
*-*-*-*-*-*-*-*
[LORE v3,00/35](https://lore.kernel.org/all/20230216051750.3125598-1-surenb@google.com)
*-*-*-*-*-*-*-*
[LORE v4,0/33](https://lore.kernel.org/all/20230227173632.3292573-1-surenb@google.com) | +| 2023/01/09 | Suren Baghdasaryan | [Per-VMA locks](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=c7f8f31c00d187a2c71a241c7f2bd6aa102a4e6f) | 710245 | v1 ☐☑ | [LORE v1,0/41](https://lore.kernel.org/r/20230109205336.3665937-1-surenb@google.com)
*-*-*-*-*-*-*-*
[LORE v2,0/33](https://lore.kernel.org/r/20230127194110.533103-1-surenb@google.com)
*-*-*-*-*-*-*-*
[LORE v3,00/35](https://lore.kernel.org/all/20230216051750.3125598-1-surenb@google.com)
*-*-*-*-*-*-*-*
[LORE v4,0/33](https://lore.kernel.org/all/20230227173632.3292573-1-surenb@google.com) | +| 2023/03/14 | Heiko Carstens | [s390/mm: try VMA lock-based page fault handling first](https://patchwork.kernel.org/project/linux-mm/patch/20230314132808.1266335-1-hca@linux.ibm.com/) | 729931 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20230314132808.1266335-1-hca@linux.ibm.com) | +| 2023/04/04 | Matthew Wilcox (Oracle) | [Avoid the mmap lock for fault-around](https://lore.kernel.org/all/20230404135850.3673404-1-willy@infradead.org) | linux-next 树目前包含一些补丁 (主要来自 Suren), 这些补丁可以在没有 mmap 锁保护的情况下处理一些页面错误. 这个补丁集增加了在不使用 mmap 锁的情况下处理页缓存中已经存在的部分文件的页错误的能力. 作者采取了一种非常渐进的方法来解锁. | v1 ☐☑✓ | [LORE v1,0/6](https://lore.kernel.org/all/20230404135850.3673404-1-willy@infradead.org) | +| 2023/04/14 | Suren Baghdasaryan | [mm: handle swap page faults if the faulting page can be locked](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ea65d9a7db3819b26e673ea987eb830ed207afd0) | 当在 VMA 锁定保护下处理页面故障时, 所有交换页面故障(swap page faults)都会使用 mmap_lock 重试, 因为如果不能立即锁定 folio, 则 folio_lock_or_retry 实现必须放弃并重新获取 mmap_lock. 这个补丁修改为只在对开锁定失败时重试, 而不是重试所有交换的页面错误. | v1 ☐☑✓ | [LORE v1,0/1](https://lore.kernel.org/all/20230414180043.1839745-1-surenb@google.com) | #### 8.2.5.5 Maple Tree @@ -5702,6 +5736,14 @@ VMA 的读锁定是使用两个序列号完成的: 一个在 vm_area_struct 中, | 2022/10/11 | Liam Howlett | [mm/mmap: Preallocate maple nodes for brk vma expansion](https://patchwork.kernel.org/project/linux-mm/patch/20221011160624.1253454-1-Liam.Howlett@oracle.com/) | 684552 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221011160624.1253454-1-Liam.Howlett@oracle.com) | | 2022/10/28 | Liam Howlett | [[v2] maple_tree: Reorganize testing to restore module testing](https://patchwork.kernel.org/project/linux-mm/patch/20221028180415.3074673-1-Liam.Howlett@oracle.com/) | 689987 | v2 ☐☑ | [LORE v2,0/1](https://lore.kernel.org/r/20221028180415.3074673-1-Liam.Howlett@oracle.com) | +### 8.2.6 DEVMEM Page-Fault +------- + +| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | +|:----:|:----:|:---:|:----:|:---------:|:----:| +| 2023/03/19 | buddy.zhang | [mm: Keep memory type same on DEVMEM Page-Fault](https://patchwork.kernel.org/project/linux-mm/patch/20230319033750.475200-1-buddy.zhang@biscuitos.cn/) | 在 X86 架构上, 支持 Page 表上的内存类型, 例如 PTE 是 PAT/PCD/PWD, 可以将内存类型设置为 WC/WB/WT/UC 等.
然后, 来自用户空间或内核空间的虚拟地址可以映射到相同的物理页面, 如果每个页面表都有不同的内存类型, 那么同一物理页面有更多的内存类型是令人困惑的.
在 DEVMEM 上, remap_pfn_range() 在不同的映射上保持内存类型相同. | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20230319033750.475200-1-buddy.zhang@biscuitos.cn) | + + ## 8.3 反向映射 RMAP(Reverse Mapping) ------- @@ -5942,7 +5984,7 @@ git://github.com/glommer/linux.git kmemcg-slab | 2015/11/10 | Vladimir Davydov | [memcg/kmem: switch to white list policy](https://lore.kernel.org/patchwork/patch/616606/) | NA | v2 ☑ 4.5-rc1 | [PatchWork v2,0/6](https://lore.kernel.org/patchwork/patch/616606) | | 2020/06/23 | Glauber Costa | [kmem controller for memcg](https://lwn.net/Articles/516529) | memcg 支持对内核内存 (kmem) 进行统计, memcg 开始支持统计两种类型的内核内存使用 : 内核栈 和 slab. 这些限制对于防止 fork 炸弹 (bombs) 等事件很有用. | v6 ☑ 3.8-rc1 | [PatchWork v5 kmem(stack) controller for memcg](https://lore.kernel.org/patchwork/patch/333535), [PatchWork v5 slab accounting for memcg](https://lore.kernel.org/patchwork/patch/334479)
*-*-*-*-*-*-*-*
[PatchWork v6](https://lore.kernel.org/patchwork/patch/337780) | | 2020/06/23 | Roman Gushchin | [The new cgroup slab memory controller](https://lore.kernel.org/patchwork/patch/1261793) | 将 SLAB 的统计跟踪统计从页面级别更改为到对象级别. 它允许在 memory cgroup 之间共享 SLAB 页. 这一变化消除了每个 memory cgroup 每个重复的每个 cpu 和每个节点 slab 缓存集, 并为所有内存控制组建立了一个共同的每个 cpu 和每个节点 slab 缓存集. 这将显著提高 SLAB 利用率(最高可达 45%), 并相应降低总的内核内存占用. 测试发现不可移动页面数量的减少也对内存碎片产生积极的影响. | v7 ☑ 5.9-rc1 | [PatchWork v7](https://lore.kernel.org/patchwork/patch/1261793) | -| 2015/11/10 | Roman Gushchin | [memcg/kmem: switch to white list policy](https://lore.kernel.org/patchwork/patch/616606) | 所有的 kmem 分配 (即每次 kmem_cache_alloc、kmalloc、alloc_kmem_pages 调用) 都会自动计入内存 cgroup. 如果出于某些原因, 呼叫者必须明确选择退出. 这样的设计决策会导致以下许多个问题, 因此该补丁切换为白名单策略. 现在 kmalloc 用户必须通过传递 __GFP_ACCOUNT 标志来显式标记. | v7 ☑ 5.9-rc1 | [PatchWork v7](https://lore.kernel.org/patchwork/patch/616606) | +| 2015/11/10 | Roman Gushchin | [memcg/kmem: switch to white list policy](https://lore.kernel.org/patchwork/patch/616606) | 所有的 kmem 分配 (即每次 kmem_cache_alloc、kmalloc、alloc_kmem_pages 调用) 都会自动计入内存 cgroup. 如果出于某些原因, 呼叫者必须明确选择退出. 这样的设计决策会导致以下许多个问题, 因此该补丁切换为白名单策略. 现在 kmalloc 用户必须通过传递 `__GFP_ACCOUNT` 标志来显式标记. | v7 ☑ 5.9-rc1 | [PatchWork v7](https://lore.kernel.org/patchwork/patch/616606) | | 2021/05/06 | Waiman Long | [The new cgroup slab memory controller](https://lore.kernel.org/patchwork/patch/1422112) | [The new cgroup slab memory controller](https://lore.kernel.org/patchwork/patch/1261793) 合入后, 不再需要为每个 MEMCG 使用单独的 kmemcache, 从而减少了总体的内核内存使用. 但是, 我们还为每次调用 kmem_cache_alloc() 和 kmem_cache_free() 增加了额外的内存开销. 参见 [10befea91b: hackbench.throughput -62.4% regression](https://lore.kernel.org/lkml/20210114025151.GA22932@xsang-OptiPlex-9020) 和 [memcg: performance degradation since v5.9](https://lore.kernel.org/linux-mm/20210408193948.vfktg3azh2wrt56t@gabell/T/#u). 这组补丁通过降低了 kmemcache 统计的开销. 缓解了这个问题. | v7 ☑ 5.9-rc1 | [PatchWork v7](https://lore.kernel.org/patchwork/patch/1422112) | | 2020/12/20 | Shakeel Butt | [inotify, memcg: account inotify instances to kmemcg](https://lore.kernel.org/patchwork/patch/1355497) | 目前 sysctl inotify/max_user_instances 用于限制系统的 inotify 实例数量. 对于运行多个工作负载的系统, 每个用户的命名空间 sysctl max_inotify_instances 可以用于进一步划分 inotify 实例. 但是, 没有简单的方法可以对 inotify 实例设置合理的系统级别最大限制, 并在工作负载之间对其进行进一步分区. 该补丁通过将 inotify 实例分配给 memcg, 管理员可以简单地将 max_user_instances 设置为 INT_MAX, 并让作业的 memcg 限制它们的 inotify 实例. | v2 ☑ [5.12-rc1](https://kernelnewbies.org/Linux_5.12#Memory_management) | [PatchWork v7](https://lore.kernel.org/patchwork/patch/1355497), [COMMIT](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ac7b79fd190b02e7151bc7d2b9da692f537657f3) | | 2014/02/15 | Vladimir Davydov | [kmemcg shrinkers](https://lore.kernel.org/patchwork/patch/438717) | NA | v15 ☐ | [PatchWork -mm,v15,00/13](https://lore.kernel.org/patchwork/patch/438717) | @@ -6372,7 +6414,7 @@ FRONTSWAP 对应的另一个后端叫 [ZSWAP](https://lwn.net/Articles/537422). | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | |:-----:|:----:|:----:|:----:|:------------:|:----:| -| 2022/02/28 | Ananda | [[PATCH/RESEND] mm: add ztree - new allocator for use via zpool API](https://patchwork.kernel.org/project/linux-mm/patch/20220228110546.151513-1-a.badmaev@clicknet.pro/) | 用于压缩页面的专用分配器 Ztree. 在大多数情况下, Ztree 提供了快速写入、有限的最坏情况操作时间和良好的压缩比.
每个 Ztree 块存储整数个压缩对象. 这些块由几个物理页面 (从 1 到 8) 组成, 并使用红黑树用于高效的区块组织.
从 0 到 PAGE_SIZE 的范围被划分为与树的数量相对应的区间数, 每棵树只操作其区间中的大小对象.
1. 块树彼此隔离, 这使得同时对来自不同树的多个对象执行操作成为可能. 块可以密集地排列各种大小的对象, 从而降低内部碎片.
2. 此外, 这个分配器试图填充不完整的块, 而不是添加新的块, 因此在许多情况下, 它提供的压缩比大大高于 z3fold 和 zbud.
3. 除了更大的灵活性, Ztree 在最糟糕的执行时间方面明显优于其他 ZPOOL 后端, 从而允许更好的响应. | v1 ☐☑ |[LORE v1,0/1](https://lore.kernel.org/r/20220228110546.151513-1-a.badmaev@clicknet.pro)
*-*-*-*-*-*-*-*
[LORE v2,0/1](https://lore.kernel.org/r/20220301092503.44444-1-a.badmaev@clicknet.pro)
*-*-*-*-*-*-*-*
[LORE v3,0/1](https://lore.kernel.org/r/20220307142724.14519-1-a.badmaev@clicknet.pro)
*-*-*-*-*-*-*-*
[LORE v4,0/1](https://lore.kernel.org/r/20220311085807.27038-1-a.badmaev@clicknet.pro) | +| 2022/02/28 | Ananda | [[PATCH/RESEND] mm: add ztree - new allocator for use via zpool API](https://patchwork.kernel.org/project/linux-mm/patch/20220228110546.151513-1-a.badmaev@clicknet.pro/) | 用于压缩页面的专用分配器 Ztree. 在大多数情况下, Ztree 提供了快速写入、有限的最坏情况操作时间和良好的压缩比.
每个 Ztree 块存储整数个压缩对象. 这些块由几个物理页面 (从 1 到 8) 组成, 并使用红黑树用于高效的区块组织.
从 0 到 PAGE_SIZE 的范围被划分为与树的数量相对应的区间数, 每棵树只操作其区间中的大小对象.
1. 块树彼此隔离, 这使得同时对来自不同树的多个对象执行操作成为可能. 块可以密集地排列各种大小的对象, 从而降低内部碎片.
2. 此外, 这个分配器试图填充不完整的块, 而不是添加新的块, 因此在许多情况下, 它提供的压缩比大大高于 z3fold 和 zbud.
3. 除了更大的灵活性, Ztree 在最糟糕的执行时间方面明显优于其他 ZPOOL 后端, 从而允许更好的响应. | v1 ☐☑ |[LORE v1,0/1](https://lore.kernel.org/r/20220228110546.151513-1-a.badmaev@clicknet.pro)
*-*-*-*-*-*-*-*
[LORE v2,0/1](https://lore.kernel.org/r/20220301092503.44444-1-a.badmaev@clicknet.pro)
*-*-*-*-*-*-*-*
[LORE v3,0/1](https://lore.kernel.org/r/20220307142724.14519-1-a.badmaev@clicknet.pro)
*-*-*-*-*-*-*-*
[LORE v4,0/1](https://lore.kernel.org/r/20220311085807.27038-1-a.badmaev@clicknet.pro)
*-*-*-*-*-*-*-*
[LORE v6,0/1](https://lore.kernel.org/r/20221104085856.18745-1-a.badmaev@clicknet.pro)
*-*-*-*-*-*-*-*
[LORE v7,0/1](https://lore.kernel.org/r/20221119082159.63636-1-a.badmaev@clicknet.pro)
*-*-*-*-*-*-*-*
[LORE v8,0/1](https://lore.kernel.org/r/20221121145435.41002-1-a.badmaev@clicknet.pro)
*-*-*-*-*-*-*-*
[LORE v9,0/1](https://lore.kernel.org/r/20221202040110.14291-1-a.badmaev@clicknet.pro) | ### 11.2.3.3 ZBUD @@ -6520,8 +6562,8 @@ Intel 的吴峰光 [PMEM NUMA node and hotness accounting/migration](https://lor | 2021/10/14 | Yang Shi | [mm: migrate: make demotion knob depend on migration](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=20f9ba4f995247bb79e243741b8fdddbd76dd923) | NA | v1 ☑✓ 5.16-rc1 | [LORE](https://lore.kernel.org/all/20211015005559.246709-1-shy828301@gmail.com), [COMMIT](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=20f9ba4f995247bb79e243741b8fdddbd76dd923) | | 2021/11/24 | Hasan Al Maruf | [Transparent Page Placement for Tiered-Memory](https://patchwork.kernel.org/project/linux-mm/cover/cover.1637778851.git.hasanalmaruf@fb.com) | 由于不同类型的内存对性能的影响程度不同, 因此如何跨 NUMA 节点管理页面应该是一个值得关注的问题. Dave Hansen 的补丁集 ["Migrate Pages in replace of discard"](https://lwn.net/Articles/860215) 在回收过程中将顶级页面降级到慢级节点. 然而, 他的补丁集不包括将慢层内存节点上的页面提升到顶级内存节点的功能. 因此, 在慢层节点上降级或新分配的页面将经历 NUMA 延迟, 并损害应用程序性能. 在这个补丁集中,
1. 通过增强现有的 AutoNUMA 机制, 将页面从慢级节点提升到顶级节点.
2. 将顶级节点的回收和分配逻辑解耦, 以便回收在更高的水印处触发, 并将较冷的页面降级到慢层内存中. 因此, 顶级节点可以保留一些空闲空间, 以接受来自慢级节点的新分配和提升.
在对页面升级期间, 添加滞后性, 只升级那些在短时间内不太可能被降级页面. 这减少了页面在短时间内频繁降级和提升而在 NUMA 节点之间来回跳转的机会. 作者在支持 cxl 的 DRAM 和 PMEM 层的系统上测试了这个补丁集. 可以将较热的页面转移到顶级节点, 而将较冷的页面移动到慢层节点, 从而产生大量的 Meta 生产工作负载和实时流量. 因此, 顶级节点提供更多的热页面, 应用程序的性能也得到了提高. 将 80% 的匿名者带到顶级节点. 慢层内存中的匿名页大多是冷页. 由于顶级节点不能承载所有热内存, 一些热文件仍然留在慢级节点上. 尽管如此, 远程 NUMA 读带宽从 80% 减少到 40%. 与服务于整个工作集的顶级节点的基线相比, 使用这个补丁集的吞吐量回归仅为 5%. 参见报道 [Facebook/Meta Tackling Transparent Page Placement For Tiered-Memory Linux Systems](https://www.phoronix.com/scan.php?page=news_item&px=Meta-Hot-Pages-High-Tiers). | v1 ☐ | [PatchWork 0/5]https://patchwork.kernel.org/project/linux-mm/cover/cover.1637778851.git.hasanalmaruf@fb.com) | | 2021/12/11 | Baolin Wang | [Add speculative numa fault support](https://lore.kernel.org/patchwork/patch/1479229) | 这个 RFC 补丁集为分级内存等场景添加了推测性的 numa 错误支持. 在分层内存系统上, 它将依靠 numa 平衡将慢内存和热内存提升为快内存, 以提高性能. 因此, 我们可以根据某些工作负载的数据局部性, 提前在低速内存中提升多个顺序页面, 以提高性能. 那么现在有多少页面需要提升到最快的内存是最好的? 现在这个 RFC 补丁集只实现了一个基本而简单的机制来推测每个 VMA 的 numa 故障窗口. 它将为每个 VMA 引入一个新的原子成员来记录 numa 故障窗口信息, 该信息用于确定它是扩展还是减少 numa 故障窗口的顺序流. 在分层内存系统中测试 mysql 可以看到大约 6% 的改进. 注意: 这个补丁集是[基于实现分级内存提升的补丁集 NUMA balancing: optimize page placement for memory tiering system](https://lore.kernel.org/lkml/87bl2gsnrd.fsf@yhuang6-desk2.ccr.corp.intel.com). 参见报道 [Speculative NUMA Fault Support Proposed For Improving Tiered Memory Linux Performance](https://www.phoronix.com/scan.php?page=news_item&px=Speculative-NUMA-Fault) | v1 ☐ | [LORE](https://lore.kernel.org/lkml/cover.1639306956.git.baolin.wang@linux.alibaba.com), [PatchWork](https://patchwork.kernel.org/project/linux-mm/cover/cover.1639306956.git.baolin.wang@linux.alibaba.com) | -| 2022/07/13 | Huang Ying | [memory tiering: hot page selection](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=c959924b0dc53bf6252793f41480bc01b9792570) | 在分级内存的系统中, 需要使用 NUMA 来优化页面在内存中的位置. 基本上, 最初的 NUMA Balancing 实现选择并提升最近访问最多 (mostly recently accessed/MRU) 的页面. 但最近访问的页面可能很冷. 因此, 在这个补丁集中, 我们基于 NUMA 平衡页表扫描和页面 Page Fault & Hint 之间的延迟实现了一个新的热页识别算法. 另外一方面热页升级可能会在系统中产生一些开销. 为了控制开销, 实现了一种简单的提升速率限制机制. 用于识别热页的热阈值通常取决于工作负载. 因此, 我们还实现了一个热页阈值自动调整算法. 基本思想是增加 / 减少热页阈值, 使通过热页阈值提升到快速内存的页面数接近速率限制. | v1 ☐☑ | [2022/04/08 LORE v1,0/3](https://lore.kernel.org/r/20220408071222.219689-1-ying.huang@intel.com)
*-*-*-*-*-*-*-*
[2022/06/22 LORE v1,0/3](https://lore.kernel.org/r/20220622083519.708236-1-ying.huang@intel.com)
*-*-*-*-*-*-*-*
[2022/07/13 LORE v1,0/3](https://lore.kernel.org/r/20220713083954.34196-1-ying.huang@intel.com) | -| 2022/04/13 | Jagdish Gediya | [mm: demotion: Introduce new node state N_DEMOTION_TARGETS](https://patchwork.kernel.org/project/linux-mm/cover/20220413092206.73974-1-jvgediya@linux.ibm.com/) | 631805 | v2 ☐☑ | [LORE v2,0/5](https://lore.kernel.org/r/20220413092206.73974-1-jvgediya@linux.ibm.com)
*-*-*-*-*-*-*-*
[LORE v3,0/7](https://lore.kernel.org/r/20220422195516.10769-1-jvgediya@linux.ibm.com)
*-*-*-*-*-*-*-*
[LORE v1,0/3](https://lore.kernel.org/r/20220426085105.60822-1-ying.huang@intel.com)
*-*-*-*-*-*-*-*
[LORE v1,0/3](https://lore.kernel.org/r/20220510063958.86985-1-ying.huang@intel.com) | +| 2022/07/13 | Huang Ying | [memory tiering: hot page selection](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=c959924b0dc53bf6252793f41480bc01b9792570) | 在分级内存的系统中, 需要使用 NUMA 来优化页面在内存中的位置. 需要识别慢内存节点中的热门页面.
最初的 NUMA Balancing 实现选择并提升最近访问最多(mostly recently accessed/MRU) 的页面. 但这并不是一个识别热门页面的完美算法, 访问频率很低的页面最终可能会被访问, 而最近访问的页面也可能很冷. 因为 NUMA 平衡页表扫描周期可能很长 (例如 60 秒). 因此, 这个补丁集
1. 基于 NUMA 平衡页表扫描和页面 Page Fault & Hint 之间的延迟实现了一个新的热页识别算法, 这是一种最常访问(MFU) 算法.
1. 另外一方面热页升级可能会在系统中产生一些开销. 在内存分层模式下的 NUMA 均衡, 如果慢速内存节点有热页, 快速内存节点有冷页, 则需要在快、冷内存节点之间提升热页/降级冷页. 由于访问膨胀和缓慢的内存带宽争用, 提升/降级所消耗的 CPU 周期和内存带宽将损害某些工作负载的延迟. 因此有必要尽快地完成提升/降级. 为了控制开销, 实现了一种页面提升率限制机制.
3. 用于识别热页的升级热阈值通常取决于工作负载. 因此这个补丁还实现了一个热页阈值自动调整算法. 基本思想是增加/减少热页阈值, 使通过热页阈值提升到快速内存的页面数接近速率限制. | v1 ☐☑ | [2022/04/08 LORE v1,0/3](https://lore.kernel.org/r/20220408071222.219689-1-ying.huang@intel.com)
*-*-*-*-*-*-*-*
[2022/04/26 LORE v2,0/3](https://lore.kernel.org/r/20220426085105.60822-1-ying.huang@intel.com)
*-*-*-*-*-*-*-*
[2022/05/01 LORE v2,0/3,RESEND](https://lore.kernel.org/r/20220510063958.86985-1-ying.huang@intel.com)
*-*-*-*-*-*-*-*
[2022/06/22 LORE v4,0/3](https://lore.kernel.org/r/20220622083519.708236-1-ying.huang@intel.com)
*-*-*-*-*-*-*-*
[2022/07/13 LORE v4,0/3,RESEND](https://lore.kernel.org/r/20220713083954.34196-1-ying.huang@intel.com) | +| 2022/04/13 | Jagdish Gediya | [mm: demotion: Introduce new node state N_DEMOTION_TARGETS](https://patchwork.kernel.org/project/linux-mm/cover/20220413092206.73974-1-jvgediya@linux.ibm.com/) | 这组补丁引入了新的节点状态 N_DEMATION_TARGETS, 用于区分可作为降级目标的节点, node_states[N_DEMATION_TARGETS] 用于保存可作为降级对象的节点列表. 节点状态 N_DEMOTION_TARGETS 也是从 dax kmem 驱动程序设置的, 通过 dax kmem 注册的特定类型的存储器(例如 HBM)可能不是降级的正确选择, 因此将来应该根据某些属性来区分它们, dax kmem - 驱动程序应该避免将它们设置为 N_DEMOTON_TARGES, 然而, 当前的实现也没有区分任何这样的内存, 它将所有 N_memory 都视为降级目标, 因此该补丁系列不会修改当前的行为.
可以通过 `cat /sys/devices/system/node/demotion` 可用于查看系统中可用的降级目标. | v2 ☐☑ | [LORE v2,0/5](https://lore.kernel.org/r/20220413092206.73974-1-jvgediya@linux.ibm.com)
*-*-*-*-*-*-*-*
[LORE v3,0/7](https://lore.kernel.org/r/20220422195516.10769-1-jvgediya@linux.ibm.com) | | 2022/07/14 | Aneesh Kumar K.V | [mm/demotion: Memory tiers and demotion](https://patchwork.kernel.org/project/linux-mm/cover/20220527122528.129445-1-aneesh.kumar@linux.ibm.com/) | 645595 | v4 ☐☑ | [LORE v4,0/7](https://lore.kernel.org/r/20220527122528.129445-1-aneesh.kumar@linux.ibm.com)
*-*-*-*-*-*-*-*
[LORE v5,0/9](https://lore.kernel.org/r/20220603134237.131362-1-aneesh.kumar@linux.ibm.com)
*-*-*-*-*-*-*-*
[LORE v6,0/13](https://lore.kernel.org/r/20220610135229.182859-1-aneesh.kumar@linux.ibm.com)
*-*-*-*-*-*-*-*
[LORE v7,0/12](https://lore.kernel.org/r/20220622082513.467538-1-aneesh.kumar@linux.ibm.com)
*-*-*-*-*-*-*-*
[LORE v9,0/8](https://lore.kernel.org/r/20220714045351.434957-1-aneesh.kumar@linux.ibm.com)
*-*-*-*-*-*-*-*
[LORE v10,0/8](https://lore.kernel.org/r/20220720025920.1373558-1-aneesh.kumar@linux.ibm.com)
*-*-*-*-*-*-*-*
[LORE v11,0/8](https://lore.kernel.org/r/20220728190436.858458-1-aneesh.kumar@linux.ibm.com)
*-*-*-*-*-*-*-*
[LORE v12,0/8](https://lore.kernel.org/r/20220729061349.968148-1-aneesh.kumar@linux.ibm.com)
*-*-*-*-*-*-*-*
[LORE v13,0/9](https://lore.kernel.org/r/20220808062601.836025-1-aneesh.kumar@linux.ibm.com)
*-*-*-*-*-*-*-*
[LORE v14,0/10](https://lore.kernel.org/r/20220812055710.357820-1-aneesh.kumar@linux.ibm.com)
*-*-*-*-*-*-*-*
[LORE v15,0/10](https://lore.kernel.org/r/20220818131042.113280-1-aneesh.kumar@linux.ibm.com) | | 2022/06/06 | Aneesh Kumar K V | [mm/demotion: Add sysfs ABI documentation](https://patchwork.kernel.org/project/linux-mm/patch/87r1428k9n.fsf@linux.ibm.com/) | 647508 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/87r1428k9n.fsf@linux.ibm.com) | | 2022/06/07 | Johannes Weiner | [mm: mempolicy: N:M interleave policy for tiered memory nodes](https://patchwork.kernel.org/project/linux-mm/patch/20220607171949.85796-1-hannes@cmpxchg.org/) | 648110 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20220607171949.85796-1-hannes@cmpxchg.org) | @@ -6529,6 +6571,7 @@ Intel 的吴峰光 [PMEM NUMA node and hotness accounting/migration](https://lor | 2022/08/29 | Aneesh Kumar K V | [[v2] mm/demotion: Expose memory tier details via sysfs](https://patchwork.kernel.org/project/linux-mm/patch/20220829060745.287468-1-aneesh.kumar@linux.ibm.com/) | 671886 | v2 ☐☑ | [LORE v2,0/1](https://lore.kernel.org/r/20220829060745.287468-1-aneesh.kumar@linux.ibm.com) | | 2022/10/20 | Huang, Ying | [memory tier, sysfs: rename attribute"nodes"to"nodelist"](https://patchwork.kernel.org/project/linux-mm/patch/20221020015122.290097-1-ying.huang@intel.com/) | 686946 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221020015122.290097-1-ying.huang@intel.com) | | 2022/11/22 | Mina Almasry | [[RFC,V1] mm: Disable demotion from proactive reclaim](https://patchwork.kernel.org/project/linux-mm/patch/20221122203850.2765015-1-almasrymina@google.com/) | 698228 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221122203850.2765015-1-almasrymina@google.com) | +| 2022/11/22 | Mina Almasry | [mm: Add memory.demote for proactive demotion only](https://patchwork.kernel.org/project/linux-mm/patch/20221122203850.2765015-2-almasrymina@google.com/) | 添加主动降级接口 memory.demote.
此接口可按如下方式使用:
`echo "1m" > memory.demote`. 在这个命令下, 内核将尝试从这个 cgroup 中降级 1M 的内存. 内核可能无法降级用户空间请求的全部数量, 在这种情况下, EAGAIN 将返回给用户(类似于 memory.request). 内核将只尝试使用此接口降级页面. 它不会尝试任何其他类型的回收(交换、写回或回收干净的文件页). | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221122203850.2765015-2-almasrymina@google.com) | @@ -6827,6 +6870,7 @@ KFENCE 的灵感来自于 [GWP-ASan](http://llvm.org/docs/GwpAsan.html), 这是 | 2022/06/28 | Yee Lee | [[v2,1/1] mm: kfence: apply kmemleak_ignore_phys on early allocated pool](https://patchwork.kernel.org/project/linux-mm/patch/20220628113714.7792-2-yee.lee@mediatek.com/) | 654579 | v2 ☐☑ | [LORE v2,0/1](https://lore.kernel.org/r/20220628113714.7792-2-yee.lee@mediatek.com) | | 2022/07/27 | Imran Khan | [[RFC] mm/kfence: Introduce kernel parameter for selective usage of kfence.](https://patchwork.kernel.org/project/linux-mm/patch/20220727234241.1423357-1-imran.f.khan@oracle.com/) | 663583 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20220727234241.1423357-1-imran.f.khan@oracle.com) | | 2022/08/14 | Imran Khan | [[v3] kfence: add sysfs interface to disable kfence for selected slabs.](https://patchwork.kernel.org/project/linux-mm/patch/20220814195353.2540848-1-imran.f.khan@oracle.com/) | 667448 | v3 ☐☑ | [LORE v3,0/1](https://lore.kernel.org/all/20220814195353.2540848-1-imran.f.khan@oracle.com) | +| 2023/03/28 | Muchun Song | [Simplify kfence code](https://patchwork.kernel.org/project/linux-mm/cover/20230328095807.7014-1-songmuchun@bytedance.com/) | 734539 | v1 ☐☑ | [LORE v1,0/6](https://lore.kernel.org/r/20230328095807.7014-1-songmuchun@bytedance.com) | ## 13.4 Debugging @@ -7410,7 +7454,7 @@ OS 判断如果是在用户态触发这个硬件内存错误时, 处理方式是 | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | |:----:|:----:|:---:|:----:|:---------:|:----:| -| 2021/09/22 | John Hubbard | [Mitosis: Transparently Self-Replicating Page-Tables for Large-Memory Machines](https://research.vmware.com/files/attachments/0/0/0/0/1/0/3/aspl0359a-achermanna.pdf) | 迁移的时候考虑迁移 page-table. | v1 ☐ | [GitHub](https://github.com/mitosis-project/mitosis-linux) | +| 2021/09/22 | John Hubbard | [Mitosis: Transparently Self-Replicating Page-Tables for Large-Memory Machines](https://research.vmware.com/files/attachments/0/0/0/0/1/0/3/aspl0359a-achermanna.pdf) | NUMA 迁移的时候考虑迁移 page-table. 在 NUMA 系统下, 内存的增长速度超过了 TLB 容量的增长速度, 从而可能引入严重的性能问题, 而 NUMA 已有的研究都集中在的内存中数据的分配和迁移策略上, 但没有关于如何在各 NUMA 之间放置页表的问题的研究. Mitosis 实现了一种程序无感的页表复制和迁移算法, 通过透明地跨 NUMA 复制和迁移页表来减轻 NUMA 对页表遍历的影响, 这降低了在 Page Walk 执行页表遍历时访问远程 NUMA 节点的频率. | v1 ☐ | [GitHub](https://github.com/mitosis-project/mitosis-linux) | @@ -7583,6 +7627,7 @@ ZONE_MOVABLE 一个 pseudo zone, 它实际是从内核划分的某个 zone 中 | 2022/03/14 | Xavier Roche | [[v4] tmpfs: support for file creation time](https://patchwork.kernel.org/project/linux-mm/patch/20220314211150.GA123458@xavier-xps/) | 623317 | v4 ☐☑ | [LORE v4,0/1](https://lore.kernel.org/r/20220314211150.GA123458@xavier-xps)| | 2022/04/18 | Gabriel Krisman Bertazi | [shmem: Allow userspace monitoring of tmpfs for lack of space.](https://patchwork.kernel.org/project/linux-mm/cover/20220322222738.182974-1-krisman@collabora.com/) | 625589 | v1 ☐☑ | [2022/03/22 LORE v1,0/3](https://lore.kernel.org/r/20220322222738.182974-1-krisman@collabora.com)
*-*-*-*-*-*-*-*
[2022/03/28 LORE v2,0/3](https://lore.kernel.org/r/20220328020443.820797-1-krisman@collabora.com)
*-*-*-*-*-*-*-*
[2022/04/18 LORE v3,0/3](https://lore.kernel.org/r/20220418213713.273050-1-krisman@collabora.com) | | 2022/07/26 | Liu Zixian | [shmem: support huge_fault to avoid pmd split](https://patchwork.kernel.org/project/linux-mm/patch/20220726124315.1606-1-liuzixian4@huawei.com/) | 663073 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20220726124315.1606-1-liuzixian4@huawei.com)
*-*-*-*-*-*-*-*
[LORE v2,0/1](https://lore.kernel.org/r/20220726132751.1639-1-liuzixian4@huawei.com) | +| 2022/11/08 | Lukas Czerner | [shmem: user and group quota support for tmpfs](https://patchwork.kernel.org/project/linux-mm/cover/20221108133010.75226-1-lczerner@redhat.com/) | 693244 | v1 ☐☑ | [LORE v1,0/2](https://lore.kernel.org/r/20221108133010.75226-1-lczerner@redhat.com)
*-*-*-*-*-*-*-*
[LORE v2,0/3](https://lore.kernel.org/r/20221121142854.91109-1-lczerner@redhat.com) | ### 14.14.2 Anonymous Shared Memory-Ashmem diff --git a/study/kernel/00-DESCRIPTION/SCHEDULER.md b/study/kernel/00-DESCRIPTION/SCHEDULER.md index d83997f..eaf5f9f 100644 --- a/study/kernel/00-DESCRIPTION/SCHEDULER.md +++ b/study/kernel/00-DESCRIPTION/SCHEDULER.md @@ -562,6 +562,14 @@ linux 调度器定义了多个调度类, 不同调度类的调度优先级不同 #### 1.5.4.2 SMT scheduling/core scheduling vs coscheduling ------- + +2018 年, 研究人员先后揭露的 TLBleed 和 PortSmash 两大[侧信道攻击漏洞](https://github.com/nsacyber/Hardware-and-Firmware-Security-Guidance)对 SMT 的安全性提出了挑战, 该漏洞影响了所有支持超线程的英特尔 CPU. 并甚至影响 AMD, POWER 等所有支持 SMT 的 CPU. + +| 漏洞 | 描述 | 技术手段 | POC | +|:---:|:----:|:------:|:----:| +| [TLBleed](https://www.vusec.net/projects/tlbleed) | 通过窥探 TLB 泄漏信息. 研究人员 Gras 在 Blackhat 2018 大会上介绍了该漏洞, 可提取 GPG 所使用的加密密钥, 成功获取 libgcrypt(在 GPG 中使用) 的 256 位 EdDSA 密钥, 成功率为 98%, 只需单独监视共驻超线程上的签名操作, 分析耗时 17 秒. | TLB 是一种缓存, 用于加快将常用虚拟地址转换为物理内存地址的速度. TLBleed 通过使用 TLB 来检测 CPU 寄存器中有用的信息, 为超线程访问运行在同一内核上的另一个超线程的信息提供了一种方式. 此漏洞与 Spectre 和 Meltdown 无关, 这两个漏洞都利用推测执行故障泄漏 CPU 缓存中的信息. 参见 [TLBleed 漏洞竟是通过探测 TLB 获取 CPU 秘钥, 你知道吗?](https://www.linuxprobe.com/tlb-cpu-bug.html) 以及研究报告 [Cache Missing for Fun and Profit](https://www.daemonology.net/papers/htt.pdf). | [Arsalaan-Hameed/CS665-TLBLEED](https://github.com/Arsalaan-Hameed/CS665-TLBLEED) | +| [PortSmash](https://github.com/bbbrumley/portsmash) | 2018 年研究人员 Billy Bob Brumley, Cesar Pereida Garcia, Sohaib ul Hassan 和来自芬兰坦佩雷理工大学的 Nicola Tuveri 和古巴哈瓦那大学的 Alejandro Cabrera Aldaya 发现发现了一个名为 [PortSmash](https://github.com/bbbrumley/portsmash) 的新的侧信道攻击漏洞, 它使用定时攻击来窃取同一 CPU 核心中运行 SMT / 超线程的其他进程的信息. 利用这种攻击, 研究人员能够从与其利用相同的核心运行的 OpenSSL 线程窃取私人密钥. 对应的 [CVE-2018-5407](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5407). Brumley 等人描述的攻击有效地利用了 OpenSSL 1.1.0h 中的一个弱点, 该弱点将秘密做了一个分支, 因此可以通过测量竞争次数来推断私钥. OpenSSL 已经为打上[补丁](https://github.com/openssl/openssl/commit/aab7c770353b1dc4ba045938c8fb446dd1c4531e), 并防御了这种特定的攻击. | 研究人员提供了一份研究报告 [Port Contention for Fun and Profit](https://ieeexplore.ieee.org/document/8835264). 报告中指出这个漏洞是由 SMT 的端口争用所引发的, 端口争用被用于衡量 OpenSSL 执行操作所需的时间, 通过这些测量数据, 研究人员能够逆向查找以恢复私钥.
在一个线程上运行的进程会拥有自己的指令和数据, 但它将与在并行线程上运行的进程共享一些硬件资源. 指令将在更简单的操作中独立解码, 并在 CPU 中流水线化到相应的执行单元. 每个核心都有一个完整的一组执行单元支持整个指令集, 同一核心的线程共享访问执行单元.
执行单元被捆绑在一起, 每个单元都可以通过一个端口访问: 来自两个线程的微型组件被分配到 (一个) 可用端口, 而另一个微组件, 即核心调度器, 当相同的微型组件被分配到不同的等效执行单元时, 可以优化公平性和性能端口. 这些端口是就争用的对象.
例如, 假设在特定加密操作期间受害者进程使用端口 5: 当受害者进程未使用端口 5 时, 在另一个线程上运行的间谍进程将具有在端口 5 上重复执行的访问; 一旦受害者进程在端口 5 上进行操作, 调度程序就会将操作从间谍进程中延迟以确保公平. 因此, 间谍过程可以测量端口 5 的操作执行的延迟, 并确定受害者进程何时使用相同的端口. 这象征着输入信息可被处理, 恢复私钥. 参见 [英特尔 CPU 曝严重的 PortSmash 超线程漏洞 敏感数据可被盗](https://www.linuxprobe.com/intel-cpu-portsmash.html) 以及 [TLBleed: When Protecting Your CPU Caches is not Enough.](https://i.blackhat.com/us-18/Thu-August-9/us-18-Gras-TLBleed-When-Protecting-Your-CPU-Caches-is-Not-Enough.pdf) | [bbbrumley/portsmash](https://github.com/bbbrumley/portsmash) | + core_scheduling 与 coscheduling * core_scheduling 是近几年 (笔者当前时间 2021 年 1 月) 争议颇大的一个功能. @@ -698,6 +706,7 @@ CFS 用户反复在社区抱怨并行 kbuild 对桌面交互性有负面影响 | 2022/05/18 | Fam Zheng | [sched: Enable root level cgroup bandwidth control](https://lore.kernel.org/all/20220518100841.1497391-1-fam.zheng@bytedance.com) | TODO | v1 ☐☑✓ | [LORE](https://lore.kernel.org/all/20220518100841.1497391-1-fam.zheng@bytedance.com) | | 2022/10/19 | Chuyi Zhou | [sched/fair: Add min_ratio for cfs bandwidth_control](https://lore.kernel.org/all/20221019031551.24312-1-zhouchuyi@bytedance.com) | 如果用户设置的配额 / 周期比过小, 在当前的 cfs 带宽控制机制下, 长时间持锁可能会导致任务被节流, 导致整个[系统卡住](https://lore.kernel.org/lkml/5987be34-b527-4ff5-a17d-5f6f0dc94d6d@huawei.com). 为了防止上述情况的发生, 本补丁在 `procfs` 中增加了 `sysctl_sched_cfs_bandwidth_min_ratio`, 它表示用户可以设置的配额 / 周期的最小百分比. 默认值为 0, 用户可以设置配额和周期而不触发此约束. | v1 ☐☑✓ | [LORE](https://lore.kernel.org/all/20221019031551.24312-1-zhouchuyi@bytedance.com) | | 2022/10/17 | Josh Don | [sched: async unthrottling for cfs bandwidth](https://lore.kernel.org/all/20221017234750.454419-1-joshdon@google.com) | CFS 带宽目前分配新的运行时, 并在 hrtimer 回调中取消 cfs_rq 的内联. 运行时分发是一个每个 CPU 的操作, 而取消节流是一个每个 cgroup 的操作, 因为需要 tg 遍历. 在拥有大量 CPU 和大型 cgroup 层次结构的机器上, CPU *cgroups 的工作可能在单个 hrtimer 回调中无法完成: 由于 IRQ 被禁用, 很容易发生 hard lockup. 具体来说, 我们发现在 256 个 CPU、O(1000) 个 cCGROUP 在层次结构中被限制以及高内存带宽使用的配置中存在可伸缩性问题. 要解决这个问题, 我们可以通过 CSD 异步取消 cfs_rq 的节流. 每个 CPU 负责自己进行节流, 从而在整个系统中更公平地划分总体工作, 并避免 hard lockup. | v1 ☐☑✓ | [LORE](https://lore.kernel.org/all/20221017234750.454419-1-joshdon@google.com)
*-*-*-*-*-*-*-*
[LORE v2](https://lore.kernel.org/all/20221026224449.214839-1-joshdon@google.com) | +| 2022/12/12 | Peng Zhang | [sched: Throttling through task work for cfs bandwidth](https://lore.kernel.org/all/20221212061321.36422-1-zhangpeng.00@bytedance.com) | 若任务占用资源并在内核空间中被限制, 则可能会导致阻塞, 从而造成或者加剧优先级翻转的问题. 这组补丁试图通过在任务返回到用户模式时使用 task_work 来限制任务来解决此问题.
这个补丁使用 task_work 在任务返回到用户空间时将 throttle 的任务出队, 然后在 unthrottle 时再将其入列. 当前能正常工作, 但目前的实现并没有考虑到所有的细节, 比如竞争条件、负载跟踪等. 作者认为这种解决方案的最大缺点是, 在解锁过程中可能有太多的任务需要排队, 从而导致巨大的开销和延迟. | v1 ☐☑✓ | [LORE](https://lore.kernel.org/all/20221212061321.36422-1-zhangpeng.00@bytedance.com) | 这个 bandwidth controller 提供了两个参数来管理针对各个 cgroup 的限制. @@ -2577,7 +2586,7 @@ commit [6e5fb223e89d ("mm: sched: numa: Implement constant, per task Working Set | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | |:----:|:----:|:---:|:---:|:----------:|:----:| | 2022/01/28 | Bharata B Rao | [sched/numa: Process Adaptive autoNUMA](https://lore.kernel.org/lkml/20220128052851.17162-1-bharata@amd.com) | 实现了一种进程自适应 autoNUMA 算法 (Process Adaptive autoNUMA, PAN). 在每个进程级别上收集 NUMA 故障统计信息, 以更好地捕获应用程序行为, 计算 autoNUMA 扫描周期.
在现有的扫描周期计算机制中: 1. 扫描周期是从每线程的统计数据中派生出来的. 2. 静态阈值(NUMA_PERIOD_threshold) 用于更改扫描速率.
这组补丁集将 NUMA fault 按照不同的维护划分, 如本地的与远程的 (local vs. remote), 私有的和共享的(private vs. shared). 然后在每个进程级别收集 numa faults 统计数据, 从而更好地捕获应用程序行为. 不再使用静态阈值, 而是根据远程故障率来学习和调整扫描速率, 可以更好地响应不同的工作负载行为. 由于进程的线程已经被视为一个 numa_group, 因此我们在任务的[内存管理] 中添加了一组度量标准, 以跟踪各种类型的错误并从中推导出扫描速度. 新的每进程故障统计数据只对每进程扫描周期计算有贡献, 而现有的每线程统计数据继续对 numa_group 统计数据有贡献, 后者最终确定跨节点迁移内存和线程的阈值. 参见 phoronix 的报道 [AMD Cooking Up A"PAN"Feature That Can Help Boost Linux Performance](https://www.phoronix.com/scan.php?page=news_item&px=AMD-PAN-Linux-RFC) | v0 ☐ | [LKML v0,0/5](https://lkml.org/lkml/2022/1/28/16), [LORE](https://lore.kernel.org/lkml/20220128052851.17162-1-bharata@amd.com) | -| 2023/01/16 | Raghavendra K T | [sched/numa: Enhance vma scanning](https://lore.kernel.org/all/cover.1673610485.git.raghavendra.kt@amd.com) | 借助了 Mel 的建议核想法, 不同于 Process Adaptive autoNUMA. 本补丁集
1. 最多跟踪 4 个最近访问 vma 的线程, 只扫描访问 vma 的线程. (注意: 只使用 unsigned int. 实验表明, 追踪 8 种不同的 pid 开销更大)
2. 前 2 次无条件允许线程扫描 vmas, 以保持扫描的初衷.
3. 如果有超过 4 个线程(即超过我们可以记住的 pid), 默认允许扫描, 因为我们可能会错过记录当前线程是否对 vma 有任何兴趣.
通过这个补丁集, 可以看到扫描开销(AutoNuma 开销) 大幅减少, 其中一些 enchmark 提高了性能, 而其他的几乎没有倒退. | v1 ☐☑✓ | [LORE v1,0/1](https://lore.kernel.org/all/cover.1673610485.git.raghavendra.kt@amd.com)
*-*-*-*-*-*-*-*
[LORE v2,0/3](https://lore.kernel.org/all/cover.1675159422.git.raghavendra.kt@amd.com)
*-*-*-*-*-*-*-*
[LORE v3,0/4](https://lore.kernel.org/all/cover.1677557481.git.raghavendra.kt@amd.com)
*-*-*-*-*-*-*-*
[LORE v3,0/4](https://lore.kernel.org/all/cover.1677672277.git.raghavendra.kt@amd.com) | +| 2023/01/16 | Raghavendra K T | [sched/numa: Enhance vma scanning](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=d46031f40e0f7f7bf63914bb3f2e404ad3886ecd) | 借助了 Mel 的建议核想法, 不同于 Process Adaptive autoNUMA. 本补丁集
1. 最多跟踪 4 个最近访问 vma 的线程, 只扫描访问 vma 的线程. (注意: 只使用 unsigned int. 实验表明, 追踪 8 种不同的 pid 开销更大)
2. 前 2 次无条件允许线程扫描 vmas, 以保持扫描的初衷.
3. 如果有超过 4 个线程(即超过我们可以记住的 pid), 默认允许扫描, 因为我们可能会错过记录当前线程是否对 vma 有任何兴趣.
通过这个补丁集, 可以看到扫描开销(AutoNuma 开销) 大幅减少, 其中一些 enchmark 提高了性能, 而其他的几乎没有倒退. 参见 [知乎 - sched/numa: Enhance vma scanning](https://zhuanlan.zhihu.com/p/614407036) | v1 ☐☑✓ | [LORE v1,0/1](https://lore.kernel.org/all/cover.1673610485.git.raghavendra.kt@amd.com)
*-*-*-*-*-*-*-*
[LORE v2,0/3](https://lore.kernel.org/all/cover.1675159422.git.raghavendra.kt@amd.com)
*-*-*-*-*-*-*-*
[LORE v3,0/4](https://lore.kernel.org/all/cover.1677557481.git.raghavendra.kt@amd.com)
*-*-*-*-*-*-*-*
[LORE v3,0/4](https://lore.kernel.org/all/cover.1677672277.git.raghavendra.kt@amd.com) | ### 4.6.4 NUMA Balancing Placement And Migration @@ -3294,7 +3303,7 @@ v4.13 引入 NUMA WAKE AFFINE 的时候测试发现, CPU 的空闲造成了 NAS ------- | 论文 | 描述 | 实现 | -|:---:|:----:|:----:| +|:---:|:----:|:---:| | [Traffic management: a holistic approach to memory placement on NUMA systems, ASPLOS 2013](https://dl.acm.org/doi/10.1145/2451116.2451157)| Carrefour 方案, 通过 AMD IBS 采样内存访问信息, 优化页面迁移. 减少不必要的迁移. | [Carrefour](https://github.com/Carrefour) | | [Large pages may be harmful on NUMA systems](https://dl.acm.org/doi/10.5555/2643634.2643659)
[Large Pages May Be Harmful on NUMA Systems](https://www.usenix.org/sites/default/files/conference/protected-files/atc14_slides_gaud.pdf) | 传统的 NUMA Balancing 在大页的场景遇到了两个问题: 热页效应( hot-page effect)和页面伪共享(page-level false sharing), 这不能通过页面迁移来解决. 为了解决这些问题, 论文提出了 Carrefour-LP: 对支持 NUMA 的页面放置算法 Carrefour 的大页面扩展. | NA | @@ -3311,6 +3320,8 @@ v4.13 引入 NUMA WAKE AFFINE 的时候测试发现, CPU 的空闲造成了 NAS | [Thread and memory placement on NUMA systems: asymmetry matters, ATC 2015](https://dl.acm.org/doi/10.5555/2813767.2813788) | Asymsched 方案, NUMA Balancing 的时候, 不仅考虑 NUMA Distance 还考虑节点之间的互联方式
比如当节点通过不同带宽的链路连接时, 不仅要考虑线程和数据是放在相同还是不同的节点上, 还要考虑这些节点是如何连接的. | [paper](https://www.usenix.org/system/files/conference/atc15/atc15-paper-lepers.pdf), [slide](https://www.usenix.org/sites/default/files/conference/protected-files/atc15_slides_lepers.pdf) | | [Communication-aware process and thread mapping using online communication detection](https://dl.acm.org/doi/10.1016/j.parco.2015.01.005) | 提出了 CDSM, 共享内存中的通信检测, 从页面错误中检测通信并使用此信息来执行映射(重点关注页面迁移)的机制. CDSM 在并行应用程序执行期间在操作系统级别工作, 并支持使用共享内存进行通信的所有并行化模型. 它不需要修改应用程序、以前了解其行为或更改硬件和运行时库. | [matthiasdiener/cdsm](https://github.com/matthiasdiener/cdsm) | | [kMAF: Automatic kernel-level management of thread and data affinity](https://ieeexplore.ieee.org/document/7855906)
[Kernel-Based Thread and Data Mapping for Improved Memory Affinity](https://dl.acm.org/doi/10.1109/TPDS.2015.2504985) | 提出 kMAF, 内核中自动管理线程和数据亲和性的机制. 正在运行的应用程序的内存访问行为在其执行期间通过分析其页面错误来确定. kMAF 使用此信息迁移线程和内存页, 从而优化整体内存访问局部性. | [matthiasdiener/kmaf](https://github.com/matthiasdiener/kmaf) | +| [Bandwidth-Aware Page Placement in NUMA, IPDPS 2020](https://arxiv.org/abs/2003.03304) | 论文提出了 BWAP, 一种基于非对称加权页面交错的新型页面放置机制. 通过识别进程的访存特征, 分析程序的内存映射特征, 通过 PMU 检测内存访问 STALL 率, 指导页面迁移. 将目标 NUMA 系统的分析性能模型与给定内存密集型应用程序的页面分发的在线迭代调整相结合. | [slide_bwap.pdf](https://gureya.github.io/ppt/bwap.pdf), [epeec/BWAP](https://github.com/epeec/BWAP) | +| [NrOS: Effective Replication and Sharing in an Operating System, OSDI 2021](https://www.usenix.org/conference/osdi21/presentation/bhardwaj) | NrOS, 这是一种新的操作系统内核, 具有更安全的同步方法, 可以运行许多 POSIX 程序. NrOS 主要构造为一个简单的顺序内核, 没有并发性, 因此更容易开发和推理其正确性. 此内核使用节点复制跨 NUMA 节点进行扩展, 节点复制 (Node Replicated) 是一种受分布式系统中的状态机复制启发的方案. NrOS 在每个 NUMA 节点上复制内核状态, 并使用操作日志来维护副本之间的强一致性. 内核可以安全、并发地从其本地内核副本读取, 从而消除了远程 NUMA 访问. 参见 [NrOS:一个基于 numa node replica 的操作系统的理念](https://zhuanlan.zhihu.com/p/411531730) 和 [osdi21_slides](https://www.usenix.org/system/files/osdi21_slides_bhardwaj.pdf) | [node-replicated-kernel](https://nrkernel.systems/book/#node-replicated-kernel) | ## 4.7 WAKEUP @@ -3345,7 +3356,7 @@ v3.0 版本 [sched: Reduce runqueue lock contention -v6](https://git.kernel.org/ | 2015/08/03 | tip-bot for Peter Zijlstra | [sched: Introduce the'trace_sched_waking'tracepoint](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fbd705a0c6184580d0e2fbcbd47a37b6e5822511) | NA | v1 ☑✓ 4.3-rc1 | [LORE](https://lore.kernel.org/all/tip-fbd705a0c6184580d0e2fbcbd47a37b6e5822511@git.kernel.org/) | | 2020/05/24 | Mel Gorman | [Optimise try_to_wake_up() when wakee is descheduling](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=2ebb17717550607bcd85fb8cf7d24ac870e9d762) | 唤醒时如果 wakee 进程正在睡眠或者调度(释放 CPU), 优化在 on_cpu 的自旋等待时间 | v1 ☑ 5.8-rc1 | [LORE 0/2](https://lore.kernel.org/lkml/20200524202956.27665-1-mgorman@techsingularity.net) | | 2022/08/24 | Peng Wang | [sched/fair: select waker's cpu for wakee on sync wakeup](https://lore.kernel.org/all/1508aa17d1a169077c8d8d8c22d2bd529101af0e.1661313074.git.rocking@linux.alibaba.com) | TODO | v1 ☐☑✓ | [LORE](https://lore.kernel.org/all/1508aa17d1a169077c8d8d8c22d2bd529101af0e.1661313074.git.rocking@linux.alibaba.com) | -| 2023/02/03 | Chen Yu | [sched/fair: Wake short task on current CPU](https://lore.kernel.org/all/cover.1675361144.git.yu.c.chen@intel.com) | 其主要目的是避免在不必要时出现过多的跨 CPU 唤醒. 频繁的跨 CPU 唤醒会对某些工作负载造成严重损害, 尤其是在高核心数系统上. 如果唤醒和唤醒都是短时任务, 则通过将唤醒置于唤醒 CPU 上来禁止跨 CPU 唤醒. 短时间的任务可能会成为高负载系统的麻烦制造者, 因为它会带来频繁的上下文切换. 因此, 此策略仅在系统繁忙时生效. 此外, 当仍有空闲 CPU 时, 禁止空闲 CPU 扫描是不合理的. 首先利用第一个补丁 [sched/fair: Record the average duration of a task](https://lore.kernel.org/all/155aa36ba14b8a1f8e6c3ccda7999125edfff990.1675361144.git.yu.c.chen@intel.com) 跟踪任务的平均运行时间 dur_avg, 从而更好地定义小任务. 然后选择本地 CPU 进行唤醒. 测试发现, Intel 2 x 56C/112T 平台的性能有了显著提高. 例如, 在某些情况下, 它将缩放(1200+%), netperf(600+%). 商业 RDBMS 对 schbench、hacksbench、tbench 和 OLTP 工作负载没有明显影响. 参见 phoronix 报道 [Linux Performance Patches Revved To Avoid Too Many Unnecessary Cross-CPU Wake-ups](https://www.phoronix.com/news/Linux-Wake-Short-Task-CPU). | v5 ☐☑✓ | [LORE](https://lore.kernel.org/all/20220915165407.1776363-1-yu.c.chen@intel.com)
*-*-*-*-*-*-*-*
[LORE v2,0/2](https://lore.kernel.org/all/cover.1666531576.git.yu.c.chen@intel.com)
*-*-*-*-*-*-*-*
[LORE v5,0/2](https://lore.kernel.org/all/cover.1675361144.git.yu.c.chen@intel.com) | +| 2023/02/03 | Chen Yu | | v7 之前 title [sched/fair: Wake short task on current CPU](https://lore.kernel.org/all/cover.1675361144.git.yu.c.chen@intel.com), 其主要目的是避免在不必要时出现过多的跨 CPU 唤醒. 频繁的跨 CPU 唤醒会对某些工作负载造成严重损害, 尤其是在高核心数系统上. 如果唤醒和唤醒都是短时任务, 则通过将唤醒置于唤醒 CPU 上来禁止跨 CPU 唤醒. 短时间的任务可能会成为高负载系统的麻烦制造者, 因为它会带来频繁的上下文切换. 因此, 此策略仅在系统繁忙时生效. 此外, 当仍有空闲 CPU 时, 禁止空闲 CPU 扫描是不合理的. 首先利用第一个补丁 [sched/fair: Record the average duration of a task](https://lore.kernel.org/all/155aa36ba14b8a1f8e6c3ccda7999125edfff990.1675361144.git.yu.c.chen@intel.com) 跟踪任务的平均运行时间 dur_avg, 从而更好地定义小任务. 然后选择本地 CPU 进行唤醒. 测试发现, Intel 2 x 56C/112T 平台的性能有了显著提高. 例如, 在某些情况下, 它将缩放(1200+%), netperf(600+%). 商业 RDBMS 对 schbench、hacksbench、tbench 和 OLTP 工作负载没有明显影响. 参见 phoronix 报道 [Linux Performance Patches Revved To Avoid Too Many Unnecessary Cross-CPU Wake-ups](https://www.phoronix.com/news/Linux-Wake-Short-Task-CPU). | v5 ☐☑✓ | [LORE](https://lore.kernel.org/all/20220915165407.1776363-1-yu.c.chen@intel.com)
*-*-*-*-*-*-*-*
[LORE v2,0/2](https://lore.kernel.org/all/cover.1666531576.git.yu.c.chen@intel.com)
*-*-*-*-*-*-*-*
[LORE v5,0/2](https://lore.kernel.org/all/cover.1675361144.git.yu.c.chen@intel.com)
*-*-*-*-*-*-*-*
[LORE v6,0/2](https://lore.kernel.org/all/cover.1677069490.git.yu.c.chen@intel.com)
*-*-*-*-*-*-*-*
[LORE v7,0/2](https://lore.kernel.org/all/cover.1682060436.git.yu.c.chen@intel.com)
*-*-*-*-*-*-*-*
[LORE v8,0/2](https://lore.kernel.org/all/cover.1682661027.git.yu.c.chen@intel.com) | ### 4.7.1.1 TTWU 中的内存屏障 @@ -5807,6 +5818,17 @@ CONFIG_HW_VIP_THREAD 被标记为 static_vip/dynamic_vip, VIP 线程提供了 mu CONFIG_HUAWEI_SCHED_VIP 被标记为 vip_prio, 为 VIP 线程提供了近似于优先级的功能. 同时提供了较为完善的 VIP Load Balance 机制. +#### 8.9.3.4 +------- + +[星汉未来 - 一文看懂业界在离线混部技术](https://blog.51cto.com/u_15513890/5017537) + +[字节跳动开源 Katalyst:在离线混部调度,成本优化升级](https://www.oschina.net/news/233867/katalyst-open-source) + +[kubewharf/katalyst-core](https://github.com/kubewharf/katalyst-core) + + + # 9 IDLE ------- @@ -6083,7 +6105,7 @@ Google 的 Peter Oskolkov 发布了[最早的 RFC v0.1 补丁](https://lore.kern | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | |:----:|:----:|:---:|:----:|:---------:|:----:| | 2021/12/14 | Peter Oskolkov / | [sched,mm,x86/uaccess: implement User Managed Concurrency Groups](https://lore.kernel.org/patchwork/cover/1433967) | UMCG (User-Managed Concurrency Groups) | [PatchWork RFC,v0.1,0/9](https://lore.kernel.org/patchwork/cover/1433967)
*-*-*-*-*-*-*-*
[2021/07/08 PatchWork RFC,0/3,v0.2](https://lore.kernel.org/patchwork/cover/1455166)
*-*-*-*-*-*-*-*
[2021/07/16 PatchWork RFC,0/4,v0.3](https://lore.kernel.org/patchwork/cover/1461708)
*-*-*-*-*-*-*-*
[2021/08/01 PatchWork 0/4,v0.4](https://lore.kernel.org/patchwork/cover/1470650)
*-*-*-*-*-*-*-*
[2021/08/01 LWN 0/4,v0.5](https://lore.kernel.org/patchwork/cover/1470650)
*-*-*-*-*-*-*-*
[2021/10/12 PatchWork v0.7,0/5](https://patchwork.kernel.org/project/linux-mm/cover/20211012232522.714898-1-posk@google.com)
*-*-*-*-*-*-*-*
[2021/11/04 PatchWork v0.8,0/6](https://patchwork.kernel.org/project/linux-mm/cover/20211104195804.83240-1-posk@google.com)
*-*-*-*-*-*-*-*
[2021/11/21 PatchWork v0.9,0/6](https://patchwork.kernel.org/project/linux-mm/cover/20211121212040.8649-1-posk@google.com)
*-*-*-*-*-*-*-*
[2021/11/23 PatchWork v0.9.1,0/6](https://patchwork.kernel.org/project/linux-mm/cover/20211122211327.5931-1-posk@google.com) | -| 2022/01/20 | Paul Gortmaker | [sched: User Managed Concurrency Groups](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=abedf8e2419fb873d919dd74de2e84b510259339) | Peter Zijlstra 对 UMCG 的重新实现. | v9 ☑ 4.6-rc1 | [PatchWork RFC,0/3](https://patchwork.kernel.org/project/linux-mm/cover/20211214204445.665580974@infradead.org)
*-*-*-*-*-*-*-*
[PatchWork RFC,v2,0/5](https://patchwork.kernel.org/project/linux-mm/cover/20220120155517.066795336@infradead.org) | +| 2022/01/20 | Peter Zijlstra | [sched: User Managed Concurrency Groups](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=abedf8e2419fb873d919dd74de2e84b510259339) | Peter Zijlstra 对 UMCG 的重新实现. | v9 ☑ 4.6-rc1 | [PatchWork RFC,0/3](https://patchwork.kernel.org/project/linux-mm/cover/20211214204445.665580974@infradead.org)
*-*-*-*-*-*-*-*
[PatchWork RFC,v2,0/5](https://patchwork.kernel.org/project/linux-mm/cover/20220120155517.066795336@infradead.org) | | 2022/10/19 | Andrei Vagin | [seccomp: add the synchronous mode for seccomp_unotify](https://lore.kernel.org/all/20221020011048.156415-1-avagin@gmail.com) | seccomp_unotify 允许特权更大的进程代表特权更小的进程执行操作. 在许多情况下, 工作流是完全同步的. 它意味着一个目标进程触发一个系统调用, 并将控制传递给一个主管进程, 后者处理系统调用并将控制返回给目标进程. 在这个上下文中, "同步" 意味着只有一个进程在运行, 另一个正在等待.
新的 WF_CURRENT_CPU 标志建议调度器将唤醒对象移动到当前 CPU. 对于这样的同步工作流, 它使上下文切换速度提高了几倍. 测试发现, 原来每个相互作用需要 12µs, 借助这个补丁这个过程只需要 3µs. | v2 ☐☑✓ | [LORE v2,0/5](https://lore.kernel.org/all/20221020011048.156415-1-avagin@gmail.com)
*-*-*-*-*-*-*-*
[LORE v4,0/6](https://lore.kernel.org/lkml/20230124234156.211569-1-avagin@google.com)
*-*-*-*-*-*-*-*
[LORE v5,0/6](https://lore.kernel.org/all/20230308073201.3102738-1-avagin@google.com) | @@ -6257,6 +6279,9 @@ B 站 Plugsched 介绍视频 [纯干货解读:Plugsched, 首次实现 Linux ke | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | |:----:|:----:|:---:|:----:|:---------:|:----:| | 2021/08/03 | Peter Oskolkov | [thread_info: use helpers to snapshot thread flags](https://lwn.net/Articles/722293) | 引入 read_ti_thread_flags() 规范对 thread_info 中 flag 的访问. 其中默认使用了 READ_ONCE. 防止开发者忘记了这样做. | v4 ☐ | [PatchWork v4,00/10](https://lore.kernel.org/patchwork/cover/1471548) | +| 2023/03/30 | Mathieu Desnoyers | [sched: Introduce per-mm/cpu concurrency id state](https://lore.kernel.org/all/20230330230911.228720-1-mathieu.desnoyers@efficios.com) | 跟踪每个 mm/cpu 当前分配的 mm_cid, 而不是立即释放它们. 这消除了在多线程场景(多个进程, 每个进程有多个线程)中, 在属于不同内存空间的线程之间来回切换上下文时的大多数原子操作. | v1 ☐☑✓ | [LORE](https://lore.kernel.org/all/20230330230911.228720-1-mathieu.desnoyers@efficios.com) | +| 2023/04/18 | Tejun Heo | [workqueue: Implement automatic CPU intensive detection and add monitoring](https://lore.kernel.org/all/20230418205159.724789-1-tj@kernel.org) | 为了减少并发工作线程的数量, 当前一个工作项保持在 RUNNING 状态时, 工作队列会阻止启动每个 CPU 的工作项. 因此, 每 CPU 工作项会消耗大量 CPU 周期, 即使它在正确的位置有 cond_resched(), 也可能会暂停其他每 CPU 工作项目.
为了支持可能占用 CPU 相当长一段时间的每 CPU 工作项, 工作队列具有 WQ_CPU_INTENIVE 标志, 该标志将通过标记的工作队列发布的工作项从并发管理中豁免——它们会立即启动, 不会阻塞其他工作项. 虽然这很有效, 但它很容易出错, 因为工作队列用户很容易忘记设置标志或不必要地设置标志. 此外, 错误标志设置的影响可能是相当间接的, 对根本原因具有挑战性.
这组补丁使工作队列能够根据 CPU 消耗量自动检测 CPU 密集型工作项. 如果一个工作项消耗的 CPU 时间超过阈值(默认情况下为 5ms), 则当它被调度出去时, 它会自动标记为 CPU 密集型, 从而取消对每个 CPU 的挂起工作项的启动.
这种机制并不是万无一失的, 因为如果许多占用 CPU 的工作项同时排队, 检测延迟可能会增加. 然而, 在这种情况下, 更大的问题可能是 CPU 被每个 CPU 的工作项饱和, 解决方案是使它们无法绑定. 未来的更改将通过改进 UNBOUND 工作队列的局部性行为, 并最终删除显式 WQ_CPU_INTENIVE 标志, 使其更具吸引力.
同时, 添加统计信息和监控脚本. 在调试与工作队列相关的问题时, 缺乏可见性一直是一个痛点, 随着这一变化以及为工作队列计划的更激烈的变化, 现在是解决这一缺点的好时机. | v1 ☐☑✓ | [LORE](https://lore.kernel.org/all/20230418205159.724789-1-tj@kernel.org) | +| 2023/01/13 | Nathan Huckleberry | [workqueue: Add WQ_SCHED_FIFO](https://lore.kernel.org/all/20230113210703.62107-1-nhuck@google.com) | 添加一个 WQ 标志, 允许工作队列使用具有最低重要 RT 优先级的 SCHED_FIFO. 这可以减少 CPU 负载时 IO 后处理的调度器延迟, 而不会影响其他 RT 工作负载.
这已被证明可以改善安卓系统上的应用程序启动时间[1].
调度程序延迟会影响几个驱动程序. 其中一些驱动程序已将后处理移至 IRQ 上下文中.
然而, 这可能会导致 Android 上实时线程的延迟峰值和抖动相关的 JANK. 将工作队列与 SCHED_FIFO 一起使用可以改善调度程序延迟, 而不会给 RT 线程带来延迟问题. | v1 ☐☑✓ | [LORE](https://lore.kernel.org/all/20230113210703.62107-1-nhuck@google.com) | @@ -6403,6 +6428,7 @@ ECRTS 2020(32nd Euromicro Conference on Real-Time Systems) 上 Daniel 等人发 | 2 | systrace | NA | NA | | 3 | perfetto | NA | NA | + ** 引用: **
diff --git a/study/kernel/00-DESCRIPTION/TODO.md b/study/kernel/00-DESCRIPTION/TODO.md index 942adc4..32139b3 100644 --- a/study/kernel/00-DESCRIPTION/TODO.md +++ b/study/kernel/00-DESCRIPTION/TODO.md @@ -20,33 +20,21 @@ https://lore.kernel.org/patchwork/project/lkml/list/?submitter=13305 | 2022/08/19 | Alexei Starovoitov | [bpf: BPF specific memory allocator.](https://patchwork.kernel.org/project/linux-mm/cover/20220819214232.18784-1-alexei.starovoitov@gmail.com/) | 669364 | v3 ☐☑ | [LORE v3,0/15](https://lore.kernel.org/r/20220819214232.18784-1-alexei.starovoitov@gmail.com)
*-*-*-*-*-*-*-*
[LORE v4,0/15](https://lore.kernel.org/r/20220826024430.84565-1-alexei.starovoitov@gmail.com)
*-*-*-*-*-*-*-*
[LORE v5,0/15](https://lore.kernel.org/r/20220901161547.57722-1-alexei.starovoitov@gmail.com)
*-*-*-*-*-*-*-*
[LORE v6,0/16](https://lore.kernel.org/r/20220902211058.60789-1-alexei.starovoitov@gmail.com) | | 2022/09/02 | Yafang Shao | [bpf: Introduce selectable memcg for bpf map](https://patchwork.kernel.org/project/linux-mm/cover/20220902023003.47124-1-laoar.shao@gmail.com/) | 673444 | v3 ☐☑ | [LORE v3,0/13](https://lore.kernel.org/r/20220902023003.47124-1-laoar.shao@gmail.com) | +| 2022/11/07 | Song Liu | [execmem_alloc for BPF programs](https://patchwork.kernel.org/project/linux-mm/cover/20221107223921.3451913-1-song@kernel.org/) | 692973 | v2 ☐☑ | [LORE v2,0/5](https://lore.kernel.org/r/20221107223921.3451913-1-song@kernel.org)[LORE v4,0/6](https://lore.kernel.org/r/20221117202322.944661-1-song@kernel.org)
*-*-*-*-*-*-*-*
[LORE v5,0/6](https://lore.kernel.org/r/20221128190245.2337461-1-song@kernel.org) | +| 2022/11/17 | Song Liu | [execmem_alloc for BPF programs](https://patchwork.kernel.org/project/linux-mm/cover/20221117202322.944661-1-song@kernel.org/) | 696625 | v4 ☐☑ | | +| 2022/12/12 | Yafang Shao | [mm, bpf: Add BPF into /proc/meminfo](https://patchwork.kernel.org/project/linux-mm/cover/20221212003711.24977-1-laoar.shao@gmail.com/) | 703689 | v1 ☐☑ | [LORE v1,0/9](https://lore.kernel.org/r/20221212003711.24977-1-laoar.shao@gmail.com) | | 2022/09/13 | Doug Berger | [mm: introduce Designated Movable Blocks](https://patchwork.kernel.org/project/linux-mm/cover/20220913195508.3511038-1-opendmb@gmail.com/) | 676674 | v1 ☐☑ | [LORE v1,0/21](https://lore.kernel.org/r/20220913195508.3511038-1-opendmb@gmail.com)
*-*-*-*-*-*-*-*
[LORE v4,0/9](https://lore.kernel.org/r/20230311003855.645684-1-opendmb@gmail.com) | +| 2022/10/19 | Andrei Vagin | [seccomp: add the synchronous mode for seccomp_unotify](https://lore.kernel.org/all/20221020011048.156415-1-avagin@gmail.com) | TODO | v2 ☐☑✓ | [LORE v2,0/5](https://lore.kernel.org/all/20221020011048.156415-1-avagin@gmail.com) | [Linux RSEQ Patches Updated For Allowing Faster getCPU () In C Libraries](https://www.phoronix.com/news/Linux-RSEQ-Faster-getCPU) - - - - - -| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | -|:---:|:----:|:---:|:----:|:---------:|:----:| -| 2022/10/19 | Andrei Vagin | [seccomp: add the synchronous mode for seccomp_unotify](https://lore.kernel.org/all/20221020011048.156415-1-avagin@gmail.com) | TODO | v2 ☐☑✓ | [LORE v2,0/5](https://lore.kernel.org/all/20221020011048.156415-1-avagin@gmail.com) | - - - - - - - [Seccomp 机制与 seccomp notify 介绍](https://just4coding.com/2022/04/03/seccomp/) -26e9a1ded892 sched/debug: fix dentry leak in update_sched_domain_debugfs git log --oneline android-mainline-5.10...HEAD | grep ANDROID | grep sched | grep -E "vendor|hook" @@ -108,48 +96,30 @@ khugepage_code 将选择命中率最高的节点作为首选节点, 并尝试在 节点均衡是由 commit 9f1b868a13ac("mm: thp: khugepaged: add policy for finding target node") 以满足 "numactl—interleave=all". 但交叉只是一种暗示, 并没有什么硬性要求. 因此, 使用 nodemask 来记录具有相同命中记录的节点, 巨大的页面分配可能会回退到这些节点. 并删除__GFP_THISNODE, 因为它不允许回退. 如果 nodemask 为空 (没有设置节点), 这意味着只有一个节点的历史记录最多, nodemask 方法实际上类似于 `__GFP_THISNODE`. - -| 2022/11/03 | Yang Shi | [[v2,1/2] mm: khugepaged: allow page allocation fallback to eligible nodes](https://patchwork.kernel.org/project/linux-mm/patch/20221103213641.7296-1-shy828301@gmail.com/) | 691842 | v2 ☐☑ | [LORE v2,0/2](https://lore.kernel.org/r/20221103213641.7296-1-shy828301@gmail.com) | -| 2022/11/04 | zhaoyang.huang | [[RFC] mm: introduce object accounting via backtrace on slub](https://patchwork.kernel.org/project/linux-mm/patch/1667550838-10639-1-git-send-email-zhaoyang.huang@unisoc.com/) | 692001 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/1667550838-10639-1-git-send-email-zhaoyang.huang@unisoc.com) | -| 2022/11/07 | Kirill A. Shutemov | [[PATCHv11.1,04/16] x86/mm: Handle LAM on context switch](https://patchwork.kernel.org/project/linux-mm/patch/20221107213558.27807-1-kirill.shutemov@linux.intel.com/) | 692964 | v1 ☐☑ | [LORE v1,0/16](https://lore.kernel.org/r/20221107213558.27807-1-kirill.shutemov@linux.intel.com) | -| 2022/11/07 | Song Liu | [execmem_alloc for BPF programs](https://patchwork.kernel.org/project/linux-mm/cover/20221107223921.3451913-1-song@kernel.org/) | 692973 | v2 ☐☑ | [LORE v2,0/5](https://lore.kernel.org/r/20221107223921.3451913-1-song@kernel.org)[LORE v4,0/6](https://lore.kernel.org/r/20221117202322.944661-1-song@kernel.org)
*-*-*-*-*-*-*-*
[LORE v5,0/6](https://lore.kernel.org/r/20221128190245.2337461-1-song@kernel.org) | -| 2022/11/08 | Lukas Czerner | [shmem: user and group quota support for tmpfs](https://patchwork.kernel.org/project/linux-mm/cover/20221108133010.75226-1-lczerner@redhat.com/) | 693244 | v1 ☐☑ | [LORE v1,0/2](https://lore.kernel.org/r/20221108133010.75226-1-lczerner@redhat.com)
*-*-*-*-*-*-*-*
[LORE v2,0/3](https://lore.kernel.org/r/20221121142854.91109-1-lczerner@redhat.com) | -| 2022/11/08 | Linus Torvalds | [[1/4] mm: introduce 'encoded' page pointers with embedded extra bits](https://patchwork.kernel.org/project/linux-mm/patch/20221108194139.57604-1-torvalds@linux-foundation.org/) | 693373 | v1 ☐☑ | [LORE v1,0/4](https://lore.kernel.org/r/20221108194139.57604-1-torvalds@linux-foundation.org)
*-*-*-*-*-*-*-*
[LORE v1,0/4](https://lore.kernel.org/r/20221109203051.1835763-1-torvalds@linux-foundation.org) | +| 2022/11/04 | zhaoyang.huang | [mm: introduce object accounting via backtrace on slub](https://patchwork.kernel.org/project/linux-mm/patch/1667550838-10639-1-git-send-email-zhaoyang.huang@unisoc.com/) | 692001 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/1667550838-10639-1-git-send-email-zhaoyang.huang@unisoc.com) | +| 2022/11/08 | Linus Torvalds | [mm: introduce'encoded'page pointers with embedded extra bits](https://patchwork.kernel.org/project/linux-mm/patch/20221108194139.57604-1-torvalds@linux-foundation.org/) | 693373 | v1 ☐☑ | [LORE v1,0/4](https://lore.kernel.org/r/20221108194139.57604-1-torvalds@linux-foundation.org)
*-*-*-*-*-*-*-*
[LORE v1,0/4](https://lore.kernel.org/r/20221109203051.1835763-1-torvalds@linux-foundation.org) | | 2022/11/09 | Chao Xu | [mm/vmscan: simplify the nr assignment logic for pages to scan](https://patchwork.kernel.org/project/linux-mm/patch/20221109070416.620887-1-Chao.Xu9@zeekrlife.com/) | 693511 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221109070416.620887-1-Chao.Xu9@zeekrlife.com)
*-*-*-*-*-*-*-*
[LORE v2,0/1](https://lore.kernel.org/r/20221110113130.284290-1-Chao.Xu9@zeekrlife.com) | -| 2022/11/09 | Joao Martins | [[v3] mm/hugetlb_vmemmap: remap head page to newly allocated page](https://patchwork.kernel.org/project/linux-mm/patch/20221109200623.96867-1-joao.m.martins@oracle.com/) | 693796 | v3 ☐☑ | [LORE v3,0/1](https://lore.kernel.org/r/20221109200623.96867-1-joao.m.martins@oracle.com)
*-*-*-*-*-*-*-*
[LORE v4,0/1](https://lore.kernel.org/r/20221110121214.6297-1-joao.m.martins@oracle.com| -| 2022/11/10 | Lu Jialin | [mm/memcontrol.c: drains percpu charge caches in memory.reclaim](https://patchwork.kernel.org/project/linux-mm/patch/20221110065316.67204-1-lujialin4@huawei.com/) | 693926 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221110065316.67204-1-lujialin4@huawei.com) | -| 2022/11/17 | Song Liu | [execmem_alloc for BPF programs](https://patchwork.kernel.org/project/linux-mm/cover/20221117202322.944661-1-song@kernel.org/) | 696625 | v4 ☐☑ | | -| 2022/11/19 | Ananda Badmaev | [mm: add zblock - new allocator for use via zpool API](https://patchwork.kernel.org/project/linux-mm/patch/20221119082159.63636-1-a.badmaev@clicknet.pro/) | 697232 | v7 ☐☑ | [LORE v6,0/1](https://lore.kernel.org/r/20221104085856.18745-1-a.badmaev@clicknet.pro)
*-*-*-*-*-*-*-*
[LORE v9,0/1](https://lore.kernel.org/r/20221202040110.14291-1-a.badmaev@clicknet.pro)[LORE v7,0/1](https://lore.kernel.org/r/20221119082159.63636-1-a.badmaev@clicknet.pro)
*-*-*-*-*-*-*-*
[LORE v8,0/1](https://lore.kernel.org/r/20221121145435.41002-1-a.badmaev@clicknet.pro) | -| 2022/11/21 | Vlastimil Babka | [Introduce CONFIG_SLUB_TINY and deprecate SLOB](https://patchwork.kernel.org/project/linux-mm/cover/20221121171202.22080-1-vbabka@suse.cz/)| 697743 | v1 ☐☑ | [LORE v1,0/12](https://lore.kernel.org/r/20221121171202.22080-1-vbabka@suse.cz) | | 2022/11/21 | Aleksey Romanov | [Introduce merge identical pages mechanism](https://patchwork.kernel.org/project/linux-mm/cover/20221121190020.66548-1-avromanov@sberdevices.ru/) | 697795 | v1 ☐☑ | [LORE v1,0/4](https://lore.kernel.org/r/20221121190020.66548-1-avromanov@sberdevices.ru) | -| 2022/11/22 | Mina Almasry | [[RFC,v1] mm: Add memory.demote for proactive demotion only](https://patchwork.kernel.org/project/linux-mm/patch/20221122203850.2765015-2-almasrymina@google.com/) | 698229 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221122203850.2765015-2-almasrymina@google.com) | -| 2022/11/24 | Jiasheng Jiang | [mm/vmalloc: Add check for KMEM_CACHE](https://patchwork.kernel.org/project/linux-mm/patch/20221124040226.17953-1-jiasheng@iscas.ac.cn/) | 698747 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221124040226.17953-1-jiasheng@iscas.ac.cn) | | 2022/11/25 | Peter Xu | [mm/thp: Re-apply mkdirty for small pages after split](https://patchwork.kernel.org/project/linux-mm/patch/20221125185857.3110155-1-peterx@redhat.com/) | 699295 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221125185857.3110155-1-peterx@redhat.com) | -| 2022/11/25 | Jann Horn | [[v3,1/3] mm/khugepaged: Take the right locks for page table retraction](https://patchwork.kernel.org/project/linux-mm/patch/20221125213714.4115729-1-jannh@google.com/) | 699315 | v3 ☐☑ | [LORE v3,0/3](https://lore.kernel.org/r/20221125213714.4115729-1-jannh@google.com)
*-*-*-*-*-*-*-*
[LORE v4,0/3](https://lore.kernel.org/r/20221128180252.1684965-1-jannh@google.com) |[LORE v4,0/3](https://lore.kernel.org/r/20221128180252.1684965-1-jannh@google.com)
*-*-*-*-*-*-*-*
[LORE v5,0/3](https://lore.kernel.org/r/20221129154730.2274278-1-jannh@google.com) | -| 2022/11/28 | Alexander Potapenko | [[1/2] lockdep: allow instrumenting lockdep.c with KMSAN](https://patchwork.kernel.org/project/linux-mm/patch/20221128094541.2645890-1-glider@google.com/) | 699627 | v1 ☐☑ | [LORE v1,0/2](https://lore.kernel.org/r/20221128094541.2645890-1-glider@google.com) | -| 2022/11/28 | Brian Foster | [filemap: skip write and wait if end offset precedes start](https://patchwork.kernel.org/project/linux-mm/cover/20221128155632.3950447-1-bfoster@redhat.com/) | 699767 | v2 ☐☑ | [LORE v2,0/2](https://lore.kernel.org/r/20221128155632.3950447-1-bfoster@redhat.com) | | 2022/11/29 | Liam Howlett | [VMA type safety through VMA iterator](https://patchwork.kernel.org/project/linux-mm/cover/20221129164352.3374638-1-Liam.Howlett@oracle.com/) | 700163 | v1 ☐☑ | [LORE v1,0/43](https://lore.kernel.org/r/20221129164352.3374638-1-Liam.Howlett@oracle.com) | -| 2022/11/30 | | [mm/huge_memory: add TRANSPARENT_HUGEPAGE_NEVER for THP](https://patchwork.kernel.org/project/linux-mm/patch/202211301651462590168@zte.com.cn/) | 700357 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/202211301651462590168@zte.com.cn) | -| 2022/11/30 | Matthew Wilcox | [Split page pools from struct page](https://patchwork.kernel.org/project/linux-mm/cover/20221130220803.3657490-1-willy@infradead.org/) | 700614 | v1 ☐☑ | [LORE v1,0/24](https://lore.kernel.org/r/20221130220803.3657490-1-willy@infradead.org) | -| 2022/12/01 | Mina Almasry | [[v1] mm: disable top-tier fallback to reclaim on proactive reclaim](https://patchwork.kernel.org/project/linux-mm/patch/20221201233317.1394958-1-almasrymina@google.com/) | 701011 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221201233317.1394958-1-almasrymina@google.com) | +| 2022/12/01 | Mina Almasry | [mm: disable top-tier fallback to reclaim on proactive reclaim](https://patchwork.kernel.org/project/linux-mm/patch/20221201233317.1394958-1-almasrymina@google.com/) | 701011 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221201233317.1394958-1-almasrymina@google.com) | | 2022/12/02 | Alistair Popple | [mm/mmap: Properly unaccount memory on mas_preallocate() failure](https://patchwork.kernel.org/project/linux-mm/patch/20221202045339.2999017-1-apopple@nvidia.com/) | 701081 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221202045339.2999017-1-apopple@nvidia.com) | -| 2022/12/02 | David Hildenbrand | [[RFC] mm/userfaultfd: enable writenotify while userfaultfd-wp is enabled for a VMA](https://patchwork.kernel.org/project/linux-mm/patch/20221202122748.113774-1-david@redhat.com/) | 701236 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221202122748.113774-1-david@redhat.com) | + | 2022/12/02 | Brian Foster | [proc: improve root readdir latency with many threads](https://patchwork.kernel.org/project/linux-mm/cover/20221202171620.509140-1-bfoster@redhat.com/) | 701317 | v3 ☐☑ | [LORE v3,0/5](https://lore.kernel.org/r/20221202171620.509140-1-bfoster@redhat.com) | -| 2022/11/09 | Baoquan He | [mm/vmalloc.c: allow vread() to read out vm_map_ram areas](https://patchwork.kernel.org/project/linux-mm/cover/20221109033535.269229-1-bhe@redhat.com/) | 693476 | v1 ☐☑ | [LORE v1,0/3](https://lore.kernel.org/r/20221109033535.269229-1-bhe@redhat.com)
*-*-*-*-*-*-*-*
[LORE v1,0/7](https://lore.kernel.org/r/20221204013046.154960-1-bhe@redhat.com) | | 2022/12/05 | Li,Rongqing | [mm: memcontrol: speedup memory cgroup resize](https://patchwork.kernel.org/project/linux-mm/patch/1670240992-28563-1-git-send-email-lirongqing@baidu.com/) | 701772 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/1670240992-28563-1-git-send-email-lirongqing@baidu.com) | -| 2022/12/05 | Stephen Boyd | [pstore: Avoid kcore oops by vmap()ing with VM_IOREMAP](https://patchwork.kernel.org/project/linux-mm/patch/20221205233136.3420802-1-swboyd@chromium.org/) | 702003 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221205233136.3420802-1-swboyd@chromium.org) | -| 2022/12/06 | Fabio M. De Francesco | [mm/highmem: Add notes about conversions from kmap{,_atomic}()](https://patchwork.kernel.org/project/linux-mm/patch/20221206070029.7342-1-fmdefrancesco@gmail.com/) | 702076 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221206070029.7342-1-fmdefrancesco@gmail.com)
*-*-*-*-*-*-*-*
[LORE v2,0/1](https://lore.kernel.org/r/20221207225308.8290-1-fmdefrancesco@gmail.com) | + + +| 2022/11/09 | Baoquan He | [mm/vmalloc.c: allow vread() to read out vm_map_ram areas](https://patchwork.kernel.org/project/linux-mm/cover/20221109033535.269229-1-bhe@redhat.com/) | 693476 | v1 ☐☑ | [LORE v1,0/3](https://lore.kernel.org/r/20221109033535.269229-1-bhe@redhat.com)
*-*-*-*-*-*-*-*
[LORE v1,0/7](https://lore.kernel.org/r/20221204013046.154960-1-bhe@redhat.com) | +\| 2022/12/06 | Fabio M. De Francesco | [mm/highmem: Add notes about conversions from kmap{,_atomic}()](https://patchwork.kernel.org/project/linux-mm/patch/20221206070029.7342-1-fmdefrancesco@gmail.com/) | 702076 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221206070029.7342-1-fmdefrancesco@gmail.com)
*-*-*-*-*-*-*-*
[LORE v2,0/1](https://lore.kernel.org/r/20221207225308.8290-1-fmdefrancesco@gmail.com) | | 2022/12/06 | David Hildenbrand | [mm: support `__HAVE_ARCH_PTE_SWP_EXCLUSIVE` on all architectures with swap PTEs](https://patchwork.kernel.org/project/linux-mm/cover/20221206144730.163732-1-david@redhat.com/) | 702222 | v1 ☐☑ | [LORE v1,0/26](https://lore.kernel.org/r/20221206144730.163732-1-david@redhat.com) | -| 2022/12/06 | Nico Pache | [[RFC] vmscan: Scale file_is_tiny calculation based on priority](https://patchwork.kernel.org/project/linux-mm/patch/20221206222315.37631-1-npache@redhat.com/) | 702319 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221206222315.37631-1-npache@redhat.com) | +| 2022/12/06 | Nico Pache | [vmscan: Scale file_is_tiny calculation based on priority](https://patchwork.kernel.org/project/linux-mm/patch/20221206222315.37631-1-npache@redhat.com/) | 702319 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221206222315.37631-1-npache@redhat.com) | | 2022/12/07 | Vishal Moola (Oracle) | [Convert deactivate_page() to deactivate_folio()](https://patchwork.kernel.org/project/linux-mm/cover/20221207002158.418789-1-vishal.moola@gmail.com/) | 702344 | v1 ☐☑ | [LORE v1,0/3](https://lore.kernel.org/r/20221207002158.418789-1-vishal.moola@gmail.com) | -| 2022/12/07 | Kefeng Wang | [[1/2] mm: huge_memory: Convert madvise_free_huge_pmd to use a folio](https://patchwork.kernel.org/project/linux-mm/patch/20221207023431.151008-1-wangkefeng.wang@huawei.com/) | 702384 | v1 ☐☑ | [LORE v1,0/2](https://lore.kernel.org/r/20221207023431.151008-1-wangkefeng.wang@huawei.com) | -| 2022/12/08 | chengkaitao | [[v2] mm: memcontrol: protect the memory in cgroup from being oom killed](https://patchwork.kernel.org/project/linux-mm/patch/20221208034644.3077-1-chengkaitao@didiglobal.com/) | 702809 | v2 ☐☑ | [LORE v2,0/1](https://lore.kernel.org/r/20221208034644.3077-1-chengkaitao@didiglobal.com) | -| 2022/12/08 | David Hildenbrand | [[v1] mm/userfaultfd: enable writenotify while userfaultfd-wp is enabled for a VMA](https://patchwork.kernel.org/project/linux-mm/patch/20221208114137.35035-1-david@redhat.com/) | 702923 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221208114137.35035-1-david@redhat.com)
*-*-*-*-*-*-*-*
[LORE v2,0/1](https://lore.kernel.org/r/20221209080912.7968-1-david@redhat.com) | +| 2022/12/07 | Kefeng Wang | [mm: huge_memory: Convert madvise_free_huge_pmd to use a folio](https://patchwork.kernel.org/project/linux-mm/patch/20221207023431.151008-1-wangkefeng.wang@huawei.com/) | 702384 | v1 ☐☑ | [LORE v1,0/2](https://lore.kernel.org/r/20221207023431.151008-1-wangkefeng.wang@huawei.com) | +| 2022/12/08 | chengkaitao | [mm: memcontrol: protect the memory in cgroup from being oom killed](https://patchwork.kernel.org/project/linux-mm/patch/20221208034644.3077-1-chengkaitao@didiglobal.com/) | 702809 | v2 ☐☑ | [LORE v2,0/1](https://lore.kernel.org/r/20221208034644.3077-1-chengkaitao@didiglobal.com) | | 2022/12/08 | Wenchao Hao | [cma:tracing: Print alloc result in trace_cma_alloc_finish](https://patchwork.kernel.org/project/linux-mm/patch/20221208142130.1501195-1-haowenchao@huawei.com/) | 702989 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221208142130.1501195-1-haowenchao@huawei.com) | | 2022/12/08 | Peter Xu | [mm/uffd: Always wr-protect pte in pte|pmd_mkuffd_wp()](https://patchwork.kernel.org/project/linux-mm/patch/20221208194628.766316-1-peterx@redhat.com/) | 703082 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221208194628.766316-1-peterx@redhat.com) | | 2022/12/09 | Xander | [Added ability to vmalloc executable memory](https://patchwork.kernel.org/project/linux-mm/patch/20221209131052.64235-1-xander.moerkerken@omron.com/) | 703287 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221209131052.64235-1-xander.moerkerken@omron.com) | | 2022/12/09 | Nhat Pham | [[v3,2/4] workingset: refactor LRU refault to expose refault recency check](https://patchwork.kernel.org/project/linux-mm/patch/20221209172922.3143160-1-nphamcs@gmail.com/) | 703468 | v3 ☐☑ | [LORE v3,0/4](https://lore.kernel.org/r/20221209172922.3143160-1-nphamcs@gmail.com) | -| 2022/12/12 | Yafang Shao | [mm, bpf: Add BPF into /proc/meminfo](https://patchwork.kernel.org/project/linux-mm/cover/20221212003711.24977-1-laoar.shao@gmail.com/) | 703689 | v1 ☐☑ | [LORE v1,0/9](https://lore.kernel.org/r/20221212003711.24977-1-laoar.shao@gmail.com) | | 2022/12/12 | David Hildenbrand | [[mm-stable] mm/gup_test: free memory allocated via kvcalloc() using kvfree()](https://patchwork.kernel.org/project/linux-mm/patch/20221212182018.264900-1-david@redhat.com/) | 703907 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221212182018.264900-1-david@redhat.com) | | 2022/12/12 | Jason A. Donenfeld | [mm: add VM_DROPPABLE for designating always lazily freeable mappings](https://patchwork.kernel.org/project/linux-mm/patch/20221212185347.1286824-2-Jason@zx2c4.com/) | 703918 | v12 ☐☑ | [LORE v12,0/6](https://lore.kernel.org/r/20221212185347.1286824-2-Jason@zx2c4.com)[LORE v14,0/7](https://lore.kernel.org/r/20230101162910.710293-3-Jason@zx2c4.com) | | 2022/12/12 | Mike Kravetz | [[1/2] hugetlb: really allocate vma lock for all sharable vmas](https://patchwork.kernel.org/project/linux-mm/patch/20221212235042.178355-1-mike.kravetz@oracle.com/) | 703972 | v1 ☐☑ | [LORE v1,0/2](https://lore.kernel.org/r/20221212235042.178355-1-mike.kravetz@oracle.com) | @@ -172,14 +142,29 @@ khugepage_code 将选择命中率最高的节点作为首选节点, 并尝试在 | 2022/12/23 | Zach O'Keefe | [mm/shmem: restore SHMEM_HUGE_DENY precedence over MADV_COLLAPSE](https://patchwork.kernel.org/project/linux-mm/patch/20221223003833.2793963-1-zokeefe@google.com/) | 706614 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221223003833.2793963-1-zokeefe@google.com) | | 2022/12/23 | Zach O'Keefe | [mm/MADV_COLLAPSE: don't expand collapse when vm_end is past requested end](https://patchwork.kernel.org/project/linux-mm/patch/20221223003953.2795313-1-zokeefe@google.com/) | 706615 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221223003953.2795313-1-zokeefe@google.com)
*-*-*-*-*-*-*-*
[LORE v2,0/2](https://lore.kernel.org/r/20221224081203.3193960-1-zokeefe@google.com)
*-*-*-*-*-*-*-*
[LORE v3,0/2](https://lore.kernel.org/r/20221224082035.3197140-1-zokeefe@google.com) | | 2022/12/23 | Soichiro Ueda | [virtio_balloon: high order allocation](https://patchwork.kernel.org/project/linux-mm/patch/20221223093527.12424-1-the.latticeheart@gmail.com/) | 706715 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221223093527.12424-1-the.latticeheart@gmail.com) | +| 2023/03/22 | Liu Shixin | [Delay the initialization of zswap](https://patchwork.kernel.org/project/linux-mm/cover/20230322102006.780624-1-liushixin2@huawei.com/) | 732661 | v6 ☐☑ | [LORE v6,0/2](https://lore.kernel.org/r/20230322102006.780624-1-liushixin2@huawei.com))
*-*-*-*-*-*-*-*
[LORE v7,0/4](https://lore.kernel.org/r/20230325071420.2246461-1-liushixin2@huawei.com) | +| 2023/03/22 | Florian Schmidt | [[RFC] memcg v1: provide read access to memory.pressure_level](https://patchwork.kernel.org/project/linux-mm/patch/20230322142525.162469-1-flosch@nutanix.com/) | 732770 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20230322142525.162469-1-flosch@nutanix.com) | | 2022/10/24 | Nick Terrell | [zstd: Update to upstream v1.5.2](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=2aa14b1ab2c41a4fe41efae80d58bb77da91f19f) | [Updated Zstd Implementation Merged For Linux 6.2](https://www.phoronix.com/news/Linux-6.2-Zstd) | v1 ☐☑✓ | [LORE v1,0/2](https://lore.kernel.org/all/20221024202606.404049-1-nickrterrell@gmail.com) | | 2022/11/10 | Nick Desaulniers | [Makefile.debug: support for -gz=zstd](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=9f8fe647797a4bc049bc7cceaf3a63584678ba04) | 实现 DEBUG_INFO_COMPRESSED_ZSTD, 参见 phoronix 报道 [Linux 6.2 Allows For Zstd-Compressed Debug Information](https://www.phoronix.com/news/Linux-6.2-Zstd-Debug-Info) | v3 ☐☑✓ 6.2-rc1 | [LORE](https://lore.kernel.org/all/20221110195932.377841-1-ndesaulniers@google.com) | +| 2023/03/23 | Krcka, Tomas | [[v2] mm: Be less noisy during memory hotplug](https://patchwork.kernel.org/project/linux-mm/patch/20230323174349.35990-1-krckatom@amazon.de/) | 733270 | v2 ☐☑ | [LORE v2,0/1](https://lore.kernel.org/r/20230323174349.35990-1-krckatom@amazon.de) | +| 2023/03/25 | Mark Brown | [regmap: Add basic maple tree register cache](https://patchwork.kernel.org/project/linux-mm/cover/20230325-regcache-maple-v1-0-1c76916359fb@kernel.org) | 733856 | v1 ☐☑ | [LORE v1,0/2](https://lore.kernel.org/r/20230325-regcache-maple-v1-0-1c76916359fb@kernel.org)
*-*-*-*-*-*-*-*
[LORE v2,0/2](https://lore.kernel.org/r/20230325-regcache-maple-v2-0-799dcab3ecb1@kernel.org)
*-*-*-*-*-*-*-*
[LORE v3,0/2](https://lore.kernel.org/r/20230325-regcache-maple-v3-0-23e271f93dc7@kernel.org) | +| 2023/03/27 | Matthew Wilcox | [Prevent ->map_pages from sleeping](https://patchwork.kernel.org/project/linux-mm/cover/20230327174515.1811532-1-willy@infradead.org/) | 734281 | v2 ☐☑ | [LORE v2,0/3](https://lore.kernel.org/r/20230327174515.1811532-1-willy@infradead.org) | + +| 2023/03/28 | Alistair Popple | [mm: Take a page reference when removing device exclusive entries](https://patchwork.kernel.org/project/linux-mm/patch/20230328021434.292971-1-apopple@nvidia.com/) | 734394 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20230328021434.292971-1-apopple@nvidia.com)
*-*-*-*-*-*-*-*
[LORE v2,0/1](https://lore.kernel.org/r/20230330012519.804116-1-apopple@nvidia.com) | +| 2023/03/28 | Yosry Ahmed | [memcg: make rstat flushing irq and sleep friendly](https://patchwork.kernel.org/project/linux-mm/cover/20230328061638.203420-1-yosryahmed@google.com/) | 734466 | v1 ☐☑ | [LORE v1,0/9](https://lore.kernel.org/r/20230328061638.203420-1-yosryahmed@google.com)
*-*-*-*-*-*-*-*
[LORE v2,0/9](https://lore.kernel.org/r/20230328221644.803272-1-yosryahmed@google.com) | +| 2023/03/28 | Muchun Song | [Simplify kfence code](https://patchwork.kernel.org/project/linux-mm/cover/20230328095807.7014-1-songmuchun@bytedance.com/) | 734539 | v1 ☐☑ | [LORE v1,0/6](https://lore.kernel.org/r/20230328095807.7014-1-songmuchun@bytedance.com) | + | 2022/04/06 | Liao Chang | [softirq: Introduce softirq throttling](https://lore.kernel.org/all/20220406022749.184807-1-liaochang1@huawei.com) | TODO | v1 ☐☑✓ | [LORE v1,0/3](https://lore.kernel.org/all/20220406022749.184807-1-liaochang1@huawei.com) | +| 2023/03/29 | Yicong Yang | [arm64: support batched/deferred tlb shootdown during page reclamation](https://patchwork.kernel.org/project/linux-mm/cover/20230329035512.57392-1-yangyicong@huawei.com/) | 734835 | v8 ☐☑ | [LORE v8,0/2](https://lore.kernel.org/r/20230329035512.57392-1-yangyicong@huawei.com) | +| 2023/03/29 | Luis Chamberlain | [module: avoid userspace pressure on unwanted allocations](https://patchwork.kernel.org/project/linux-mm/cover/20230329053149.3976378-1-mcgrof@kernel.org/) | 734852 | v1 ☐☑ | [LORE v1,0/7](https://lore.kernel.org/r/20230329053149.3976378-1-mcgrof@kernel.org) | +| 2023/03/30 | Longlong Xia | [mm: ksm: support hwpoison for ksm page](https://patchwork.kernel.org/project/linux-mm/cover/20230330074501.205092-1-xialonglong1@huawei.com/) | 735257 | v1 ☐☑ | [LORE v1,0/2](https://lore.kernel.org/r/20230330074501.205092-1-xialonglong1@huawei.com) | +| 2023/03/30 | Yosry Ahmed | [memcg: avoid flushing stats atomically where possible](https://patchwork.kernel.org/project/linux-mm/cover/20230330191801.1967435-1-yosryahmed@google.com/) | 735542 | v3 ☐☑ | [LORE v3,0/8](https://lore.kernel.org/r/20230330191801.1967435-1-yosryahmed@google.com) | +| 2023/03/30 | Shaun Tancheff | [memcg: Set memory min, low, high values along with max](https://patchwork.kernel.org/project/linux-mm/patch/20230330202232.355471-1-shaun.tancheff@gmail.com/) | 735566 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20230330202232.355471-1-shaun.tancheff@gmail.com) | http://viz-js.com @@ -190,14 +175,13 @@ https://www.latexlive.com -| 2022/11/15 | Nhat Pham | [cachestat: a new syscall for page cache state of files](https://patchwork.kernel.org/project/linux-mm/cover/20221115182901.2755368-1-nphamcs@gmail.com/) | 695661 | v1 ☐☑ | [LORE v1,0/4](https://lore.kernel.org/r/20221115182901.2755368-1-nphamcs@gmail.com)
*-*-*-*-*-*-*-*
[LORE v2,0/4](https://lore.kernel.org/r/20221205175140.1543229-1-nphamcs@gmail.com)
*-*-*-*-*-*-*-*
[LORE v3,0/4](https://lore.kernel.org/r/20221208223104.1554368-1-nphamcs@gmail.com)
*-*-*-*-*-*-*-*
[LORE v4,0/4](https://lore.kernel.org/r/20221216192149.3902877-1-nphamcs@gmail.com)
*-*-*-*-*-*-*-*
[LORE v5,0/3](https://lore.kernel.org/r/20230104231127.2634648-1-nphamcs@gmail.com)
*-*-*-*-*-*-*-*
[LORE v8,0/3](https://lore.kernel.org/r/20230126175356.1582123-1-nphamcs@gmail.com) | -| 2023/01/24 | Nhat Pham | [[v7,2/3] cachestat: implement cachestat syscall](https://patchwork.kernel.org/project/linux-mm/patch/20230124192946.1824096-1-nphamcs@gmail.com/) | 715251 | v7 ☐☑ | [LORE v7,0/3](https://lore.kernel.org/r/20230124192946.1824096-1-nphamcs@gmail.com) | + + | 2022/12/16 | Keith Busch | [dmapool enhancements](https://patchwork.kernel.org/project/linux-mm/cover/20221216201625.2362737-1-kbusch@meta.com/) | 705206 | v1 ☐☑ | [LORE v1,0/11](https://lore.kernel.org/r/20221216201625.2362737-1-kbusch@meta.com) | | 2023/02/01 | Alexander Halbuer | [mm: reduce lock contention of pcp buffer refill](https://patchwork.kernel.org/project/linux-mm/patch/20230201162549.68384-1-halbuer@sra.uni-hannover.de/) | 717782 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20230201162549.68384-1-halbuer@sra.uni-hannover.de) | | 2020/02/27 | Valentin Schneider | [sched, arm64: enable CONFIG_SCHED_SMT for arm64](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=6f693dd5be08237b337f557c510d99addb9eb9ec) | TODO | v2 ☑✓ 5.7-rc1 | [LORE v2,0/2](https://lore.kernel.org/all/20200227191433.31994-1-valentin.schneider@arm.com) | | 2022/12/02 | Brian Foster | [proc: improve root readdir latency with many threads](https://lore.kernel.org/all/20221202171620.509140-1-bfoster@redhat.com) | TODO | v3 ☐☑✓ | [LORE v3,0/5](https://lore.kernel.org/all/20221202171620.509140-1-bfoster@redhat.com) | | 2023/01/09 | Yian Chen | [Enable LASS (Linear Address space Separation)](https://lore.kernel.org/all/20230110055204.3227669-1-yian.chen@intel.com) | 参见 LWN 报道 [Support for Intel's LASS](https://lwn.net/Articles/919683) 和 phoronix 报道 [Intel Posts Linux Patches For Linear Address Space Separation (LASS)](https://www.phoronix.com/news/Linear-Address-Space-Separation) | v1 ☐☑✓ | [LORE v1,0/7](https://lore.kernel.org/all/20230110055204.3227669-1-yian.chen@intel.com) | -| 2023/02/02 | Yosry Ahmed | [Ignore non-LRU-based reclaim in memcg reclaim](https://patchwork.kernel.org/project/linux-mm/cover/20230202233229.3895713-1-yosryahmed@google.com/) | 718353 | v1 ☐☑ | [LORE v1,0/2](https://lore.kernel.org/r/20230202233229.3895713-1-yosryahmed@google.com)
*-*-*-*-*-*-*-*
[LORE v1,0/2](https://lore.kernel.org/r/20230228085002.2592473-1-yosryahmed@google.com)
*-*-*-*-*-*-*-*
[LORE v2,0/3](https://lore.kernel.org/r/20230309093109.3039327-1-yosryahmed@google.com) | | 2023/02/05 | Yafang Shao | [bpf, mm: introduce cgroup.memory=nobpf](https://patchwork.kernel.org/project/linux-mm/cover/20230205065805.19598-1-laoar.shao@gmail.com/) | 718891 | v1 ☐☑ | [LORE v1,0/5](https://lore.kernel.org/r/20230205065805.19598-1-laoar.shao@gmail.com)
*-*-*-*-*-*-*-*
[LORE v2,0/4](https://lore.kernel.org/r/20230210154734.4416-1-laoar.shao@gmail.com) | | 2023/02/06 | Dan Williams | [CXL RAM and the'Soft Reserved'=> 'System RAM' default](https://patchwork.kernel.org/project/linux-mm/cover/167564534874.847146.5222419648551436750.stgit@dwillia2-xfh.jf.intel.com/) | 718969 | v1 ☐☑ | [LORE v1,0/18](https://lore.kernel.org/r/167564534874.847146.5222419648551436750.stgit@dwillia2-xfh.jf.intel.com) | | 2023/02/06 | Alistair Popple | [mm: Introduce a cgroup to limit the amount of locked and pinned memory](https://patchwork.kernel.org/project/linux-mm/cover/cover.c238416f0e82377b449846dbb2459ae9d7030c8e.1675669136.git-series.apopple@nvidia.com/) | 719027 | v1 ☐☑| [LORE v1,0/19](https://lore.kernel.org/r/cover.c238416f0e82377b449846dbb2459ae9d7030c8e.1675669136.git-series.apopple@nvidia.com) | @@ -297,12 +281,10 @@ https://www.latexlive.com | 2023/01/26 | Waiman Long | [sched: Store restrict_cpus_allowed_ptr() call state](https://lore.kernel.org/all/20230127015527.466367-1-longman@redhat.com) | TODO | v3 ☐☑✓ | [LORE](https://lore.kernel.org/all/20230127015527.466367-1-longman@redhat.com) | -| 2023/01/20 | Wander Lairson Costa | [Fix put_task_struct() calls under PREEMPT_RT](https://lore.kernel.org/all/20230120150246.20797-1-wander@redhat.com) | TODO | v2 ☐☑✓ | [LORE v2,0/4](https://lore.kernel.org/all/20230120150246.20797-1-wander@redhat.com) | -| 2023/01/13 | Nathan Huckleberry | [workqueue: Add WQ_SCHED_FIFO](https://lore.kernel.org/all/20230113210703.62107-1-nhuck@google.com) | TODO | v1 ☐☑✓ | [LORE](https://lore.kernel.org/all/20230113210703.62107-1-nhuck@google.com) | | 2018/11/11 | Paul E. McKenney | [Automate initrd generation for v4.21/v5.0](https://lore.kernel.org/all/20181111200127.GA9511@linux.ibm.com) | 内核中引入 nolibc, 参见 LWN 报道 [Nolibc: a minimal C-library replacement shipped with the kernel](https://lwn.net/Articles/920158) | v5 ☐☑✓ | [LORE v5,0/8](https://lore.kernel.org/all/20181111200127.GA9511@linux.ibm.com) | | 2023/01/30 | Fan Wu | [Integrity Policy Enforcement LSM (IPE)](https://lore.kernel.org/all/1675119451-23180-1-git-send-email-wufan@linux.microsoft.com) | TODO | v9 ☐☑✓ | [LORE v9,0/16](https://lore.kernel.org/all/1675119451-23180-1-git-send-email-wufan@linux.microsoft.com) | | 2022/12/30 | Dmitrii Bundin | [scripts/gdb: add mm introspection utils](https://patchwork.kernel.org/project/linux-mm/patch/20221230163512.23736-1-dmitrii.bundin.a@gmail.com) | 707744 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20221230163512.23736-1-dmitrii.bundin.a@gmail.com)
*-*-*-*-*-*-*-*
[LORE v2,0/1](https://lore.kernel.org/r/20221231171258.7907-1-dmitrii.bundin.a@gmail.com)
*-*-*-*-*-*-*-*
[LORE v3,0/1](https://lore.kernel.org/r/20230101172312.21452-1-dmitrii.bundin.a@gmail.com) | @@ -324,13 +306,6 @@ https://www.latexlive.com - - -在 CORE 之间平衡负载时, 目标 CPU 的所有 SMT 同级 (如果有的话) 必须处于空闲状态. 否则, 拉新任务会降低繁忙 SMT 同级的吞吐量. 系统的总吞吐量保持不变. -当在 SMT 核心内平衡负载时, 则遵循硬件指示的优先级. - - - | 2023/01/09 | T.J. Mercier | [Track exported dma-buffers with memcg](https://patchwork.kernel.org/project/linux-mm/cover/20230109213809.418135-1-tjmercier@google.com/) | 710263 | v1 ☐☑ | [LORE v1,0/4](https://lore.kernel.org/r/20230109213809.418135-1-tjmercier@google.com)
*-*-*-*-*-*-*-*
[LORE v2,0/4](https://lore.kernel.org/r/20230123191728.2928839-1-tjmercier@google.com) | | 2023/01/13 | David Hildenbrand | [mm: support `__HAVE_ARCH_PTE_SWP_EXCLUSIVE` on all architectureswith swap PTEs](https://patchwork.kernel.org/project/linux-mm/cover/20230113171026.582290-1-david@redhat.com/) | 711859 | v1 ☐☑ | [LORE v1,0/26](https://lore.kernel.org/r/20230113171026.582290-1-david@redhat.com) | | 2023/01/17 | Jann Horn | [fork, vmalloc: KASAN-poison backing pages of vmapped stacks](https://patchwork.kernel.org/project/linux-mm/patch/20230117163543.1049025-1-jannh@google.com/) | 712819 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20230117163543.1049025-1-jannh@google.com) | @@ -344,21 +319,10 @@ https://www.latexlive.com | 2023/03/06 | James Houghton | [mm: rmap: merge HugeTLB mapcount logic with THPs](https://patchwork.kernel.org/project/linux-mm/cover/20230306230004.1387007-1-jthoughton@google.com/) | 727125 | v1 ☐☑ | [LORE v1,0/2](https://lore.kernel.org/r/20230306230004.1387007-1-jthoughton@google.com) | | 2023/03/08 | Mike Rapoport | [Prototype for direct map awareness in page allocator](https://patchwork.kernel.org/project/linux-mm/cover/20230308094106.227365-1-rppt@kernel.org/) | 727808 | v1 ☐☑ | [LORE v1,0/5](https://lore.kernel.org/r/20230308094106.227365-1-rppt@kernel.org) | | 2023/03/14 | chenjun (AM) | [mm/slub: Reduce memory consumption in extreme scenarios](https://patchwork.kernel.org/project/linux-mm/patch/20230314123403.100158-1-chenjun102@huawei.com/) | 729899 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20230314123403.100158-1-chenjun102@huawei.com) | -| 2023/03/14 | Heiko Carstens | [[-next] s390/mm: try VMA lock-based page fault handling first](https://patchwork.kernel.org/project/linux-mm/patch/20230314132808.1266335-1-hca@linux.ibm.com/) | 729931 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20230314132808.1266335-1-hca@linux.ibm.com) | -| 2023/03/15 | GONG, Ruiqi | [[RFC] Randomized slab caches for kmalloc()](https://patchwork.kernel.org/project/linux-mm/patch/20230315095459.186113-1-gongruiqi1@huawei.com/) | 730246 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20230315095459.186113-1-gongruiqi1@huawei.com) | | 2023/03/16 | Gou Hao | [mm/slub: reduce the calculation times of'MAX_OBJS_PER_PAGE'](https://patchwork.kernel.org/project/linux-mm/patch/20230316012517.10479-1-gouhao@uniontech.com/) | 730565 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20230316012517.10479-1-gouhao@uniontech.com) | | 2023/03/16 | Yang Yang | [[linux-next] mm: workingset: simplify the calculation of workingset size](https://patchwork.kernel.org/project/linux-mm/patch/202303161723055514455@zte.com.cn/) | 730688 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/202303161723055514455@zte.com.cn) | | 2023/03/16 | Alexandre Ghiti | [riscv: Use PUD/P4D/PGD pages for the linear mapping](https://patchwork.kernel.org/project/linux-mm/cover/20230316131711.1284451-1-alexghiti@rivosinc.com/) | 730795 | v8 ☐☑ | [LORE v8,0/4](https://lore.kernel.org/r/20230316131711.1284451-1-alexghiti@rivosinc.com) | | 2023/03/16 | Ritesh Harjani (IBM) | [[RFCv1,WIP] ext2: Move direct-io to use iomap](https://patchwork.kernel.org/project/linux-mm/patch/eae9d2125de1887f55186668937df7475b0a33f4.1678977084.git.ritesh.list@gmail.com/) | 730837 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/eae9d2125de1887f55186668937df7475b0a33f4.1678977084.git.ritesh.list@gmail.com) | -| 2023/03/19 | buddy.zhang | [mm: Keep memory type same on DEVMEM Page-Fault](https://patchwork.kernel.org/project/linux-mm/patch/20230319033750.475200-1-buddy.zhang@biscuitos.cn/) | 731498 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/r/20230319033750.475200-1-buddy.zhang@biscuitos.cn) | -| 2023/03/20 | mawupeng | [Add overflow checks for several syscalls](https://patchwork.kernel.org/project/linux-mm/cover/20230320024739.224850-1-mawupeng1@huawei.com/) | 731660 | v4 ☐☑ | [LORE v4,0/4](https://lore.kernel.org/r/20230320024739.224850-1-mawupeng1@huawei.com) | -keyiya1keyiya1 ke - - -https://lore.kernel.org/all/20230312080945.14171-1-ypodemsk@redhat.com/ - - - ### 4.7.5 sync wakeup ------- @@ -366,21 +330,8 @@ https://lore.kernel.org/all/20230312080945.14171-1-ypodemsk@redhat.com/ - [How to Use Performance Monitor Unit(PMU) of 64-bit ARMv8-A in Linux](https://blog.csdn.net/omnispace/article/details/79517182) - - - - - - - - -| 2023/03/30 | Mathieu Desnoyers | [sched: Introduce per-mm/cpu concurrency id state](https://lore.kernel.org/all/20230330230911.228720-1-mathieu.desnoyers@efficios.com) | TODO | v1 ☐☑✓ | [LORE](https://lore.kernel.org/all/20230330230911.228720-1-mathieu.desnoyers@efficios.com) | - - - [Linux Will Stop Randomizing Per-CPU Entry Area When KASLR Is Not Active](https://www.phoronix.com/news/Linux-Random-Per-CPU-Entry-ASLR) [Linux 6.4 Preparing DRM Deadline Hints To Help Influence GPU Frequency/Performance](https://www.phoronix.com/news/DMA-BUF-Fence-Deadline-6.4) @@ -394,12 +345,7 @@ https://lore.kernel.org/all/20230312080945.14171-1-ypodemsk@redhat.com/ -| 2022/06/06 | Ankur Arora | [huge page clearing optimizations](https://lore.kernel.org/all/20220606202109.1306034-1-ankur.a.arora@oracle.com) | TODO | v3 ☐☑✓ | [LORE v3,0/21](https://lore.kernel.org/all/20220606202109.1306034-1-ankur.a.arora@oracle.com) | -| 2023/04/02 | Ankur Arora | [x86/clear_huge_page: multi-page clearing](https://lore.kernel.org/all/20230403052233.1880567-1-ankur.a.arora@oracle.com) | TODO | v1 ☐☑✓ | [LORE v1,0/9](https://lore.kernel.org/all/20230403052233.1880567-1-ankur.a.arora@oracle.com) | | 2023/04/01 | Xi Wang | [Morphing CFS into FDL, The Fair Deadline Scheduling Class](https://lore.kernel.org/all/20230401230556.2781604-1-xii@google.com) | TODO | v1 ☐☑✓ | [LORE v1,0/1](https://lore.kernel.org/all/20230401230556.2781604-1-xii@google.com) | - - - | 2023/03/30 | David Dai | [Improve VM CPUfreq and task placement behavior](https://lore.kernel.org/all/20230331014356.1033759-1-davidai@google.com) | [CPUfreq/sched and VM guest workload problems](https://lpc.events/event/16/contributions/1195) | v2 ☐☑✓ | [LORE v2,0/6](https://lore.kernel.org/all/20230331014356.1033759-1-davidai@google.com) | @@ -409,15 +355,13 @@ https://lore.kernel.org/all/20230312080945.14171-1-ypodemsk@redhat.com/ +| 2023/04/26 | Bouska, Zdenek" | [Unfair qspinlocks on ARM64 without LSE atomics => 3ms delay in interrupt handling](https://patchwork.kernel.org/project/linux-mm/patch/20221230163512.23736-1-dmitrii.bundin.a@gmail.com) | 707744 | v1 ☐☑ | [LORE v1,0/1](https://lore.kernel.org/all/AS1PR10MB567534190B05A4493674173BEB659@AS1PR10MB5675.EURPRD10.PROD.OUTLOOK.COM) | + +[Re: [Question]: try to fix contention between expire_timers and try_to_del_timer_sync](https://lore.kernel.org/lkml/20170728092831.GA24839@arm.com) -通常, 当操作系统内核启动时, 它会发现可用内存并愉快地设置自己以使用该内存. 但是, UEFI 规范的 2.9 版添加了不可接受内存 (unaccepted memory) 的概念; 使用此机制时, 系统 (通常是虚拟化来宾) 将启动, 其内存处于不可接受状态. 在明确接受内存之前, 该系统将无法使用提供的内存. 在此类系统上, 引导加载程序通常会预先接受足够的内存以允许来宾内核引导; 该内核在使用之前必须负责接受其余部分. -| 优势 | 描述 | -|:---:|:----:| -| 加速开启 TDX/SEV-SNP 后虚拟机的启动. | SEV-SNP 和英特尔 TDX 等安全访客环境可以通过加密、反向映射表等方式保护其内存内容免受主机和其他访客的影响. 但是, 设置该保护需要一些时间, 这会大大减慢启动过程. 显式接受步骤允许操作系统随时间推移内存初始化. 如果仅在需要时以块形式接受内存, 则系统将更快地启动到运行状态. 来自 Kirill Shutemov 的添加未接受内存支持的补丁利用了这一点, 将内存的接受推迟到需要时才接受. | -| 显式接受有助于保护安全的来宾免受恶意虚拟机监控程序的侵害 | 这些虚拟机监控程序可能会尝试在后台使用来宾的内存玩游戏. 如果虚拟机监控程序尝试将新页面潜入来宾的地址空间, 则来宾将不接受该新内存, 并且尝试访问它将生成错误. | -每个供应商的安全环境都有自己的管理验收过程的方法, 因此实现验收的一些代码必须特定于一个子体系结构. Shutemov 的补丁增加了对英特尔 TDX 的支持, 但对 AMD 的 SEV-SNP 的支持来自 Tom Lendacky 的单独补丁集. +为解析 ascii 跟踪输出的流行方法提供一种更高效、更强大的替代方法, 以便从中提取有用的信息. 为了避免所有这些的开销和复杂性, 这个补丁集提供了一个直接到脚本的解释器路径来做同样的事情, 但以一种更规则化的方式, 它利用了跟踪基础结构提供的所有事件元信息, 例如为此目的设计的 "格式文件" 中包含的事件 / 字段信息. 它允许将通用脚本语言的全部功能应用于跟踪流, 以进行非琐碎的分析, 并突然提供了大量有用的工具和模块库(例如, 用于 Perl 的 CPAN), 以应用于创建新的、有趣的跟踪应用程序的问题. 当前只实现了一个 Perl 接口, 但其目的是使添加对其他语言(如 Python、Ruby 等)的支持相对容易——他们所需要做的就是以 Perl 实现为例, 提供自己的 trace_scripting_ops 实现和支持函数.