From 9b9e6f8aa6cb3e53df732cea7146d998786a4dea Mon Sep 17 00:00:00 2001 From: Cheng Jian Date: Mon, 31 May 2021 23:46:08 +0800 Subject: [PATCH] description: openanolis --- distro/OpenAnolis/README.md | 654 ++++++++++++------ study/kernel/00-DESCRIPTION/DEBUGGING.md | 8 + study/kernel/00-DESCRIPTION/MEMORY_MANAGER.md | 2 +- 3 files changed, 440 insertions(+), 224 deletions(-) diff --git a/distro/OpenAnolis/README.md b/distro/OpenAnolis/README.md index c6a4ec3..ff1e636 100755 --- a/distro/OpenAnolis/README.md +++ b/distro/OpenAnolis/README.md @@ -21,7 +21,7 @@ | 追踪IO时延 | Alibaba Cloud Linux 2优化了IO时延分析工具iostat的原始数据来源/proc/diskstats接口,增加了对设备侧的读、写及特殊IO(discard)等耗时的统计,此外还提供了一个方便追踪IO时延的工具bcc. | | 检测文件系统和块层的IO hang | IO hang是指在系统运行过程中,因某些IO耗时过长而引起的系统不稳定甚至宕机. 为了准确检测出IO hang,Alibaba Cloud Linux 2扩展核心数据结构,增加了在较小的系统开销下,快速定位并检测IO hang的功能. | | Memcg全局最低水位线分级 | Alibaba Cloud Linux 2新增了memcg全局最低水位线分级功能. 在global wmark_min的基础上,将资源消耗型任务的global wmark_min上移,使其提前进入直接内存回收. 将时延敏感型业务的global wmark_min下移,使其尽量避免直接内存回收. 这样当资源消耗型任务瞬间申请大量内存的时候,会通过上移的global wmark_min将其短时间抑制,避免时延敏感型业务发生直接内存回收. 等待全局kswapd回收一定量的内存后,再解除资源消耗型任务的短时间抑制. | -| Memcg后台异步回收 | Alibaba Cloud Linux 2增加了memcg粒度的后台异步回收功能. 该功能的实现不同于全局kswapd内核线程的实现,并没有创建对应的memcg kswapd内核线程,而是采用了workqueue机制来实现. | +| Memcg后台异步回收 | Alibaba Cloud Linux 2 增加了 memcg 粒度的后台异步回收功能. 该功能的实现不同于全局kswapd内核线程的实现,并没有创建对应的memcg kswapd内核线程,而是采用了workqueue机制来实现. | | cgroup v1接口支持memcg QoS功能 | 内存子系统服务质量(memcg QoS)可以用来控制内存子系统(memcg)的内存使用量的保证(锁定)与限制. Alibaba Cloud Linux 2在4.19.91-18.al7内核版本,新增cgroup v1接口支持memcg QoS的相关功能. | | Memcg Exstat功能 | Alibaba Cloud Linux 2在4.19.91-18.al7内核版本开始支持的Memcg Exstat(Extend/Extra)功能. | | TCP-RT功能的配置说明 | Alibaba Cloud Linux 2在内核版本kernel-4.19.91-21.al7开始支持TCP层的服务监控功能(TCP-RT). | @@ -30,7 +30,7 @@ # 1 SCHEDULER ------- -## 1 SCHED_SLI +## 1.1 SCHED_SLI ------- @@ -71,14 +71,8 @@ fa418988c52e alinux: sched: Finer grain of sched latency 6dbaddaa480a alinux: sched: Add cgroup's scheduling latency histograms a055ee2ce27b alinux: sched: Add cgroup-level blocked time histograms 76d98609f832 alinux: sched: Introduce cfs scheduling latency histograms -bcaf8afd6270 alinux: sched: Add switch for scheduler_tick load tracking -bb48b716f496 alinux: sched: Add switch for update_blocked_averages ``` - - - - ## 1.3 CPUACCT STAT ------- @@ -106,7 +100,7 @@ c75529800bf2 alinux: sched: Introduce per-cgroup steal accounting 06d7286d7c8e alinux: sched: add kconfig SCHED_SLI ``` -## 1.5 remove cpu_load array +## 1.4 remove cpu_load array ------- | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | @@ -128,10 +122,10 @@ bae5297970bb sched/fair: Disable LB_BIAS by default -## 1.3 PSI +## 1.5 PSI ------- -### 1.3.1 PSI V1 +### 1.5.1 PSI V1 ------- ```cpp @@ -146,7 +140,7 @@ eee77c97f8c4 sched/psi: Correct overly pessimistic size calculation a4a4fdd978a8 sched/psi: Reduce psimon FIFO priority ``` -### 1.3.2 PSI V2 +### 1.5.2 PSI V2 ------- ```cpp @@ -182,8 +176,6 @@ ec035638f0c2 sched: introduce this_rq_lock_irq() 3bf93774b166 sched: loadavg: make calc_load_n() public 4ca637b41664 sched: loadavg: consolidate LOAD_INT, LOAD_FRAC, CALC_LOAD 2dde6f773e87 delayacct: track delays from thrashing cache pages -e2d3e3cb0d60 mm: workingset: tell cache transitions from workingset thrashing -b027d193c877 mm: workingset: don't drop refault information prematurely ``` @@ -195,54 +187,7 @@ a66f5804aa67 alinux: sched: Fix compiling error without CONFIG_FAIR_GROUP_SCHED ``` -```cpp -bcaf8afd6270 alinux: sched: Add switch for scheduler_tick load tracking -bb48b716f496 alinux: sched: Add switch for update_blocked_averages -d2440c99979d alinux: sched/fair: use static load in wake_affine_weight -``` - - -```cpp -9b83fd88733f sched: Avoid scale real weight down to zero -70a23044f6b4 sched/fair: Fix race between runtime distribution and assignment -798cfa768c74 alinux: cgroup: Fix task_css_check rcu warnings -29846134c976 alinux: config: disable CONFIG_NFS_V3_ACL and CONFIG_NFSD_V3_ACL -ac2b5c94f26e alinux: kernel: reap zombie process by specified pid -e483e6eb1bbe alinux: Fix an potential null pointer reference in dump_header -``` - -```cpp -8d23e73fb3fa spi: Add missing error handling for CS GPIOs -a190de9d346a spi: cadence: Fix default polarity of native chipselect -eaf88d303c4a spi: dw: Fix default polarity of native chipselect -0eb44b65a65b spi: Support high CS when using descriptors -cefd01bcd2b8 spi: dw: Convert to use CS GPIO descriptors -9d887e907728 spi: davinci: Convert to use CS GPIO descriptors -309d178ff4c7 spi: clps711x: Convert to use CS GPIO descriptors -0ac22fd7a6b9 spi: cadence: Convert to use CS GPIO descriptors -a9d0ece2e4ab spi: atmel: Convert to use CS GPIO descriptors -c9f247fa0b08 spi: ath79: Convert to use CS GPIO descriptors -7bc17db39cdd spi: Optionally use GPIO descriptors for CS GPIOs -fcdf0c5d409e spi: spi-davinci: Don't error when SPI_CS_WORD and cs_gpio -a1ae41c5e26b iio: adc: ti-ads7950: use SPI_CS_WORD to reduce CPU usage -e24e01032e26 spi: spi-davinci: Add support for SPI_CS_WORD -78c56e85abea spi: add software implementation for SPI_CS_WORD -66f9ad76fcd8 spi: add new SPI_CS_WORD flag -1ee223919a15 spi: davinci: Remove chip select GPIO pdata -``` - - -```cpp -0f30856944d4 sched/deadline: Fix bandwidth accounting at all levels after offline migration -d29c7b8be599 x86/apic: Make apic_pending_intr_clear() more robust -f381d3d2c39c sched/core: Fix CPU controller for !RT_GROUP_SCHED -417cf53b4b85 sched/fair: Fix imbalance due to CPU affinity -7cebdfa62f22 time/tick-broadcast: Fix tick_broadcast_offline() lockdep complaint -64f3fb5d751c media: i2c: ov5640: Check for devm_gpiod_get_optional() error -``` - - -## 2.2 burst 等 +## 1.6 burst ------- @@ -259,6 +204,54 @@ d9ba6d0880e3 alinux: sched: Introduce primitives for CFS bandwidth burst 9d168f216486 alinux: sched: Defend cfs and rt bandwidth against overflow ``` +## 1.7 性能优化 +------- + +### 1.7.1 optimize overhead path +------- + +调度中一些比较耗时的路径, 在特殊条件下直接跳过. + +* 跳过 entity_tick 中负载更新流程, 通过 /proc/sys/kernel/sched_tick_update_load 开启. + +```cpp +bcaf8afd6270 alinux: sched: Add switch for scheduler_tick load tracking +``` + +* 跳过 update_blocked_averages, 通过 /proc/sys/kernel/sched_blocked_averages 控制. + +```cpp +bb48b716f496 alinux: sched: Add switch for update_blocked_averages +``` + +* 引入 WA_STATIC_WEIGHT, wake_affine 比较负载的时候, + +```cpp +d2440c99979d alinux: sched/fair: use static load in wake_affine_weight +``` + +### 1.7.2 other fix +------- + +```cpp +9b83fd88733f sched: Avoid scale real weight down to zero +70a23044f6b4 sched/fair: Fix race between runtime distribution and assignment +798cfa768c74 alinux: cgroup: Fix task_css_check rcu warnings +29846134c976 alinux: config: disable CONFIG_NFS_V3_ACL and CONFIG_NFSD_V3_ACL +ac2b5c94f26e alinux: kernel: reap zombie process by specified pid +e483e6eb1bbe alinux: Fix an potential null pointer reference in dump_header +``` + + +```cpp +0f30856944d4 sched/deadline: Fix bandwidth accounting at all levels after offline migration +f381d3d2c39c sched/core: Fix CPU controller for !RT_GROUP_SCHED +417cf53b4b85 sched/fair: Fix imbalance due to CPU affinity +``` + + + + @@ -267,7 +260,7 @@ d9ba6d0880e3 alinux: sched: Introduce primitives for CFS bandwidth burst -## 2.2 fast_cow +## 2.1 fast_cow ------- @@ -292,7 +285,7 @@ c6580892cdf8 mm/swap_state: fix a data race in swapin_nr_pages c5d5eab5e376 mm, compaction: make capture control handling safe wrt interrupts ``` -## 2.3 workingset protection/detection on the anonymous LRU list +## 2.2 task #30476868(workingset protection/detection on the anonymous LRU list) ------- @@ -302,6 +295,9 @@ c5d5eab5e376 mm, compaction: make capture control handling safe wrt interrupts ```cpp +start_commit : 0d39b86c486699cc032ceb20be15aff3722dfccd +end_commit : bb09ee6c675d19a5b16bb90b1e62ec67933fa58d + 0d39b86c4866 mm/memcontrol.c: fix memory.stat item ordering 92cd0e289a6b mm: memcontrol: fix missing suffix of workingset_restore 4f4e3a58d84d mm: remove activate_page() from unuse_pte() @@ -314,21 +310,23 @@ c3ade74e23bb mm/vmscan: protect the workingset on anonymous LRU 75f61106fbd1 mm, memcg: add workingset_restore in memory.stat ``` -## - - ```cpp c3f32f75ac28 mm/memory: fix IO cost for anonymous page ``` -## mm: balance LRU lists based on relative thrashing v2 +## 2.3 task #31256938(mm: balance LRU lists based on relative thrashing v2) ------- + + | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | |:----:|:----:|:---:|:---:|:----------:|:----:| | 2020/05/20 | Johannes Weiner | [mm: balance LRU lists based on relative thrashing v2](https://lore.kernel.org/patchwork/cover/1245255) | 基于相对抖动平衡 LRU 列表(重新实现了页面缓存和匿名页面之间的 LRU 平衡, 以便更好地与快速随机 IO 交换设备一起工作). : 在交换和缓存回收之间平衡的回收代码试图仅基于内存引用模式预测可能的重用. 随着时间的推移, 平衡代码已经被调优到一个点, 即它主要用于页面缓存, 并推迟交换, 直到 VM 处于显著的内存压力之下. 因为 commit a528910e12ec Linux 有精确的故障 IO 跟踪-回收错误页面的最终代价. 这允许我们使用基于 IO 成本的平衡模型, 当缓存发生抖动时, 这种模型更积极地扫描匿名内存, 同时能够避免不必要的交换风暴. | v1 ☑ [5.8-rc1](https://kernelnewbies.org/Linux_5.8#Memory_management) | [PatchWork v1](https://lore.kernel.org/patchwork/cover/685701)
*-*-*-*-*-*-*-*
[PatchWork v2](https://lore.kernel.org/patchwork/cover/1245255) | ```cpp +start_commit : c3f32f75ac28d063d185a641e2f4aacb6db36dd5 +end_commit : 59cec5300f4d8fe7498bf85ab53211b8bedf9b2c + 2c43e0162ddb mm/swap: fix for "mm: workingset: age nonresident information alongside anonymous pages" 6f4e186fae1a mm: workingset: age nonresident information alongside anonymous pages @@ -349,11 +347,11 @@ c9fe54195999 mm: fix LRU balancing effect of new transparent huge pages ``` -## task #30476527 +## 2.4 task #30476527 ------- -### mm: fix page aging across multiple cgroups +### 2.4.1 mm: fix page aging across multiple cgroups ------- @@ -367,7 +365,7 @@ af77f2589a48 mm: vmscan: enforce inactive:active ratio at the reclaim root 0f68ac9a7339 mm: vmscan: move file exhaustion detection to the node level ``` -### mm: vmscan: cgroup-related cleanups +### 2.4.2 mm: vmscan: cgroup-related cleanups ------- 一组 cleanup 也合入了, 我表示深刻的不理解. cleanup 没改变逻辑, 只是上代码更清晰. 合入的原因是啥 @@ -388,7 +386,7 @@ c5e78e07aaa1 mm: vmscan: move inactive_list_is_low() swap check to the caller 385269e8de19 mm: vmscan: simplify lruvec_lru_size() ``` -### cleanup +### 2.4.5 cleanup ------- @@ -404,7 +402,7 @@ f2116b7f9274 mm/workingset: remove unused @mapping argument in workingset_evicti 4f466c091b62 mm/vmscan: remove unused lru_pages argument ``` -### fix +### 2.4.6 fix ------- | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | @@ -418,12 +416,12 @@ f2116b7f9274 mm/workingset: remove unused @mapping argument in workingset_evicti 54c1b36ed43a mm/memcontrol: update lruvec counters in mem_cgroup_move_account ``` -## task #3047633(enhance & fix memcg) +## 2.5 task #3047633(enhance & fix memcg) ------- -### fix +### 2.5.1 fix ------- @@ -439,7 +437,7 @@ bc0030faffe9 mm: memcontrol: flush percpu vmevents before releasing memcg e7643c241159 mm: memcontrol: don't batch updates of local VM stats and events ``` -### +### 2.5.2 mm: memcontrol: memory.stat cost & correctness ------- | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | @@ -455,7 +453,7 @@ c24d85c9806d mm: memcontrol: make cgroup stats and events query API explicitly l 98ab53a614a mm, memcg: rename ambiguously named memory.stat counters and functions ``` -### +### 2.5.3 mm: memcontrol: track LRU counts in the vmstats array ------- | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | @@ -473,10 +471,10 @@ af2a43b06ab6 mm: memcontrol: track LRU counts in the vmstats array ``` -## task #30476868 +## 2.6 task #30476868 ------- -### NA +### 2.6.1 NA ------- ```cpp @@ -487,7 +485,7 @@ fd3832463ad1 mm: do_swap_page(): fix up the error code b41e5c93ed50 mm: memcontrol: correct the NR_ANON_THPS counter of hierarchical memcg ``` -### mm: memcontrol: charge swapin pages on instantiation +### 2.6.2 task #30476868(mm: memcontrol: charge swapin pages on instantiation) ------- @@ -497,6 +495,9 @@ b41e5c93ed50 mm: memcontrol: correct the NR_ANON_THPS counter of hierarchical me ```cpp +start_commit : 653bf0ec41271db8a1d12db7d7d519f08028c10d +end_commit : a7edd50a319ad70ac5b4f7a9dc35a85eb8c23790 + 4f9bab4b3a47 mm: memcontrol: update page->mem_cgroup stability rules 5ff14606ff7e mm: memcontrol: delete unused lrucare handling f8fed034b2fe mm: memcontrol: document the new swap control behavior @@ -518,7 +519,11 @@ d57c8cd555f8 mm: memcontrol: drop @compound parameter from memcg charging API c5cfeb3e2b18 mm: memcontrol: fix stat-corrupting race in charge moving ``` -## task #31315199 +## 2.7 task #31315199 +------- + + +### 2.7.1 swap.high cgroup v1 ------- ```cpp @@ -528,7 +533,7 @@ f8a6ae902811 alinux: mm: support swap.high for cgroup v1 ``` -### memcg: Slow down swap allocation as the available space gets depleted +### 2.7.2 memcg: Slow down swap allocation as the available space gets depleted ------- | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | @@ -543,7 +548,7 @@ e1a2c040dcd7 mm/memcg: move cgroup high memory limit setting into struct page_co 408975905823 mm/memcg: prepare for swap over-high accounting and penalty calculation ``` -### mm, memcg: cgroup v2 tunable load/store tearing fixes +### 2.7.3 mm, memcg: cgroup v2 tunable load/store tearing fixes ------- | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | @@ -559,6 +564,8 @@ e8144debf849 mm, memcg: prevent memory.swap.max load tearing e0a3c6cf7328 mm, memcg: prevent memory.high load/store tearing ``` +### 2.7.4 fix +------- ```cpp https://lore.kernel.org/patchwork/patch/1218448 @@ -573,56 +580,11 @@ efe4ee97dd8f mm, memcg: fix corruption on 64-bit divisor in memory.high throttli ``` -## task #31072503 -------- -```cpp -362c19f4f21d mm: proactive compaction -``` -## to #29998112 -------- - - -```cpp -acfc4d580d12 mm: add kiocb_wait_page_queue_init() helper -20076b974a61 btrfs: flag files as supporting buffered async reads -4001914fbf5d xfs: flag files as supporting buffered async reads -337bc770492d block: flag block devices as supporting IOCB_WAITQ -8512e751229e fs: add FMODE_BUF_RASYNC -079458e82cae mm: support async buffered reads in generic_file_buffered_read() -006b5f9cbd87 mm: add support for async page locking -9660b59fb7f5 mm: abstract out wake_page_match() from wake_page_function() -f0e3c8506f52 mm: allow read-ahead with IOCB_NOWAIT set -``` - - -## to #29931646 -------- - -```cpp -63de663eb5b9 mm, page_alloc: skip ->waternark_boost for atomic order-0 allocations - -b893a7d56134 alinux: mm: completely disable swapout with negative swappiness -``` - -## task #25182720 -------- - -```cpp -7e6914774bc8 mm: do not allow MADV_PAGEOUT for CoW pages -``` - -## to #26782094 -------- - -```cpp -7d6cb94f148e alinux: mm: Pin code section of process in memory -``` - -## MEMSLI(to #26424368) +## 2.9 MEMSLI(to #26424368) ------- ```cpp @@ -633,7 +595,6 @@ mkdir -p /sys/fs/cgroup/memory mount -t cgroup -o memory memory /sys/fs/cgroup/memory ``` - ```cpp start_commit : 3d5ca29dd634b4628d7dc82423b2680718e6eb2a end_commit : a5f32c14829c2cf52ffe8a2c25fd5e089c254d9c @@ -652,33 +613,19 @@ fe673ccf92aa alinux: mm, memcg: adjust the latency probe point for memcg direct 83058e75601e alinux: mm, memcg: record latency of direct reclaim in every memcg ``` - -## task #29077503 +## 2.10 to #28825456(Fragmentation avoidance improvements v5) ------- -### mm/memory_hotplug: Export generic_online_page() -------- - - | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | -|:----:|:----:|:---:|:---:|:----------:|:----:| -| 2019/09/09 | Jakub Kicinski | [mm/memory_hotplug: Export generic_online_page()](https://lore.kernel.org/patchwork/cover/1125874) | NA | v1 ☑ [5.5-rc1](https://kernelnewbies.org/Linux_5.5#Memory_management) | [PatchWork v1](https://lore.kernel.org/patchwork/cover/1125874) | - - +|:----:|:----:|:---:|:----:|:---------:|:----:| +| 2018/11/23 | Mel Gorman | [Fragmentation avoidance improvements v5](https://lore.kernel.org/patchwork/cover/1016503) | 伙伴系统页面分配时的反碎片化 | v5 ☑ 5.0-rc1 | [PatchWork v5](https://lore.kernel.org/patchwork/cover/1016503) | +引入了一个 boost_watermark, 在内存分配马上出现碎片化的时候, 临时提高水线, 来触发内存回收. 该特性可以通过 /proc/sys/vm/watermark_boost_factor 来控制. ```cpp -0c6a9eb5c0d9 mm/memory_hotplug: export generic_online_page() -bd6aced3785a mm/page_alloc.c: memory hotplug: free pages as higher order -5eee472829ec mm, memory_hotplug: deobfuscate migration part of offlining -a6785cdc8d2b mm, memory_hotplug: __offline_pages fix wrong locking -86f9a7e38183 mm, memory_hotplug: print reason for the offlining failure -80aa4777f63f mm/page_isolation.c: convert SKIP_HWPOISON to MEMORY_OFFLINE -5316eb6eaeb8 mm: only report isolation failures when offlining memory -59df23d6178e mm: convert PG_balloon to PG_offline -``` +start_commit : bd231c594ccec48ceb14a3e60cb7a98cd4607485 +end_commit : 0b74ae7085010c785b521673f54c2ee87888834c -```cpp bd231c594cce mm, page_alloc: reset the zone->watermark_boost early ab70cdb0d416 mm: limit boost_watermark on small zones fb4da0edd612 mm, vmscan: do not special-case slab reclaim when watermarks are boosted @@ -690,6 +637,19 @@ ba16c9c89a82 mm, page_alloc: do not wake kswapd with zone lock held 9bcadc70ec1c mm: reclaim small amounts of memory when an external fragmentation event occurs fd98e14a7fb4 mm: use alloc_flags to record if kswapd can wake 039531d219fb mm, page_alloc: spread allocations across zones before introducing fragmentation +``` + +## 2.11 to #28718400(mm: zap pages with read mmap_sem in munmap for large mapping) +------- + +| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | +|:----:|:----:|:---:|:----:|:---------:|:----:| +| 2018/09/19 | Yang Shi | [mm: zap pages with read mmap_sem in munmap for large mapping](https://lore.kernel.org/patchwork/cover/988505) | 伙伴系统页面分配时的反碎片化 | v11 ☑ 4.20-rc1 | [PatchWork v5](https://lore.kernel.org/patchwork/cover/988505) | + +```cpp +start_commit : 0b74ae7085010c785b521673f54c2ee87888834c +end_commit : 6299dc1ee6eea0b0cf33eab9244d3e7c12529c4f + 0b74ae708501 mm/filemap.c: don't bother dropping mmap_sem for zero size readahead 1d42b185abd1 mm: mmu_gather: remove __tlb_reset_range() for force flush 2841653a229c filemap: drop the mmap_sem for all blocking operations @@ -700,8 +660,19 @@ d33d61675b4d filemap: kill page_cache_read usage in filemap_fault 7027c30559b9 mm: mmap: zap pages with read mmap_sem in munmap ``` +## 2.12 task #27327988(thp/khugepaged improvements and CoW semantics) +------- + + +| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | +|:----:|:----:|:---:|:----:|:---------:|:----:| +| 2018/11/23 | Mel Gorman | [thp/khugepaged improvements and CoW semantics](https://lore.kernel.org/patchwork/cover/1225969) | NA | v4 ☑ 5.8-rc1 | [PatchWork v4](https://lore.kernel.org/patchwork/cover/1225969) | + ```cpp +start_commit : 56a432f556a5ee87668a1e100403414040ea49d9 +end_commit : e7f3612bcbbd3d5a285aa0598cc6c44b6f597eaf + 56a432f556a5 alinux: mm: thp: add fast_cow switch e5b2cc5d25ee khugepaged: introduce 'max_ptes_shared' tunable 33b1aabe69fb thp: change CoW semantics for anon-THP @@ -714,18 +685,20 @@ ed3a7ca76842 khugepaged: do not stop collapse if less than half PTEs are referen ``` -```cpp -f84e8fa05d0b alinux: add tcprt framework to kernel -4dc24f040d81 alinux: quota: fix unused label warning in dquot_load_quota_inode() -587136851af8 alinux: mm: fix undefined reference to printk_ratelimit_state -79e7c57a1833 alinux: mm: fix undefined reference to mlock_fixup -9ed6dd628860 configs: enable multipath for kernel selftests -b68e287533d2 mm: return zero_resv_unavail optimization -f85218310ce6 mm: zero remaining unavailable struct pages -``` + +## 2.13 to #26255339(Increase success rates and reduce latency of compaction v3) +------- + +| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | +|:----:|:----:|:---:|:----:|:---------:|:----:| +| 2018/11/23 | Mel Gorman | [Increase success rates and reduce latency of compaction v3](https://lore.kernel.org/patchwork/cover/1033508) | 提升内存规整的成功率, 同时降低其延迟. | v5 ☑ 5.0-rc1 | [PatchWork v5](https://lore.kernel.org/patchwork/cover/1033508) | + ```cpp +start_commit : 087f53fc12cc2176da2d744de8349307c42b73c3 +end_commit : 9002dc1ac50f07a29a645c9f59745b6dd870a9c1 + 087f53fc12cc mm, compaction: fully assume capture is not NULL in compact_zone_order() 61d6ab62ef24 mm/compaction: add missing annotation for compact_lock_irqsave a5c295c0d816 mm, compaction: fix wrong pfn handling in __reset_isolation_pfn() @@ -738,6 +711,8 @@ a5c295c0d816 mm, compaction: fix wrong pfn handling in __reset_isolation_pfn() 7f458a1c7a1f mm/compaction.c: abort search if isolation fails 19a4cd3c3a68 mm, page_alloc: always use a captured page regardless of compaction result 99d1c41066f5 mm/compaction.c: correct zone boundary handling when resetting pageblock skip hints + + 35d915bef612 mm, compaction: capture a page under direct compaction 1edbee6126fb mm, compaction: be selective about what pageblocks to clear skip hints 2de4a76844c6 mm, compaction: sample pageblocks for free pages @@ -765,78 +740,66 @@ b725e2580207 alinux: Revert "mm/compaction.c: clear total_{migrate,free}_scanned ``` -```cpp -fc0a63d8314c mm/page_reporting: add free page reporting documentation -d2932bdb681c mm/page_reporting: add budget limit on how many pages can be reported per pass -05c415bcf6f1 mm/page_reporting: rotate reported pages to the tail of the list -671b4f344c85 virtio-balloon: add support for providing free page reports to host -8256460e42d7 virtio-balloon: pull page poisoning config out of free page hinting -2b197730c24f mm: introduce Reported pages -06df03eda8de mm: add function __putback_isolated_page -999c6c60ed70 mm: use zone and order instead of free area in free_list manipulators -54c14b30a5e6 mm: move buddy list manipulations into helpers -``` +## 2.14 memcg QoS +------- + +OOM 优先级以及水线控制 ```cpp -bdfadacea5f2 mm: fix tick timer stall during deferred page init -27393b9b965a alinux: mm, memcg: export workingset counters on memcg v1 -350f8ab8b835 bpf/sockmap: Read psock ingress_msg before sk_receive_queue -4a5d2b59c6eb alinux: pci/iohub-sriov: Support for Alibaba PCIe IOHub SRIOV ec661706b1c9 alinux: mm, memcg: abort priority oom if with oom victim 2061acd6c236 alinux: mm, memcg: account number of processes in the css 7bf04cbb80f0 mm: memcontrol: use CSS_TASK_ITER_PROCS at mem_cgroup_scan_tasks() fb4c5ea64934 alinux: mm, memcg: fix soft lockup in priority oom -``` 40969475355a alinux: mm, memcg: record latency of memcg wmark reclaim - -```cpp -5c1675fcd785 tools headers uapi: Sync asm-generic/mman-common.h with the kernel -88ec97eca1f9 mm: fix trying to reclaim unevictable lru page when calling madvise_pageout -b6a18a3c8d9f mm: factor out common parts between MADV_COLD and MADV_PAGEOUT -23757dccf53d mm: introduce MADV_PAGEOUT -1af766e81e59 mm: introduce MADV_COLD -a0747c913cc3 mm: change PAGEREF_RECLAIM_CLEAN with PAGE_REFRECLAIM -27a374d1d293 tools build: Check if gettid() is available before providing helper -2e38a0f2950e alinux: mm: add proc interface to control context readahead ``` + ```cpp +a60721b9211a alinux: doc: use unified official project name Cloud Kernel 5028e358bcd4 alinux: mm: oom_kill: show killed task's cgroup info in global oom 7d41295cc97f alinux: mm: memcontrol: enable oom.group on cgroup-v1 0c8648d9554d alinux: doc: alibaba: Add priority oom descriptions 52e375fcb7a7 alinux: mm: memcontrol: introduce memcg priority oom + 1e91d392d9e8 alinux: kernel: cgroup: account number of tasks in the css and its descendants + 279df2ffcc1d alinux: doc: Add Documentation/alibaba/interfaces.rst ef467b9ddbc0 alinux: memcg: Account throttled time due to memory.wmark_min_adj 60be0f545fac alinux: memcg: Introduce memory.wmark_min_adj 63442ea9f838 alinux: memcg: Provide users the ability to reap zombie memcgs ``` +## 2.15 Introduce MADV_COLD and MADV_PAGEOUT +------- + +| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | +|:----:|:----:|:---:|:----:|:---------:|:----:| +| 2019/07/26 | Mel Gorman | [Introduce MADV_COLD and MADV_PAGEOUT](https://lore.kernel.org/patchwork/cover/1105783) | | v7 ☑ 5.4-rc1 | [PatchWork v7](https://lore.kernel.org/patchwork/cover/1105783) | + ```cpp -ef467b9ddbc0 alinux: memcg: Account throttled time due to memory.wmark_min_adj -60be0f545fac alinux: memcg: Introduce memory.wmark_min_adj -63442ea9f838 alinux: memcg: Provide users the ability to reap zombie memcgs -9ea9e641c56a alinux: mm: remove unused variable -25f9e572a7da alinux: mm: kidled: fix frame-larger-than build warning +88ec97eca1f9 mm: fix trying to reclaim unevictable lru page when calling madvise_pageout +b6a18a3c8d9f mm: factor out common parts between MADV_COLD and MADV_PAGEOUT +23757dccf53d mm: introduce MADV_PAGEOUT +1af766e81e59 mm: introduce MADV_COLD +a0747c913cc3 mm: change PAGEREF_RECLAIM_CLEAN with PAGE_REFRECLAIM ``` -83cd9d23197d alinux: jbd2: track slow handle which is preventing transaction committing + + +## 2.16 Deferred page init improvements +------- + +| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | +|:----:|:----:|:---:|:----:|:---------:|:----:| +| 2018/11/05 | Alexander Duyck | [Deferred page init improvements](https://lore.kernel.org/patchwork/cover/1007158) | | v5 ☑ 5.2-rc1 | [PatchWork v5](https://lore.kernel.org/patchwork/cover/1007158) | ```cpp -2e38a0f2950e alinux: mm: add proc interface to control context readahead -10be0b372cac readahead: introduce context readahead algorithm -``` +bdfadacea5f2 mm: fix tick timer stall during deferred page init -```cpp -9ea9e641c56a alinux: mm: remove unused variable -a5c7cdabdd39 mm: thp: don't need care deferred split queue in memcg charge move path -``` - -```cpp f8502f809fbe mm/hotplug: make remove_memory() interface usable d2097173c4bd mm/memory_hotplug: make remove_memory() take the device_hotplug_lock 25f9e572a7da alinux: mm: kidled: fix frame-larger-than build warning @@ -846,6 +809,18 @@ b065ceca86fb mm: drop meminit_pfn_in_nid as it is redundant e23b0cb5fbb8 mm: use mm_zero_struct_page from SPARC on all 64b architectures ``` + +## 2.17 CGROUP V1 ENHANCE +------- + +引入 workingset 统计 + +```cpp +27393b9b965a alinux: mm, memcg: export workingset counters on memcg v1 +``` + +引入 memory.{min,low,events,events.local} + ```cpp 3e655c51650c alinux: mm,memcg: export memory.{min,low} to cgroup v1 942855175c77 alinux: mm,memcg: export memory.{events,events.local} to v1 @@ -853,11 +828,33 @@ e23b0cb5fbb8 mm: use mm_zero_struct_page from SPARC on all 64b architectures de7ca7468c5d mm, memcg: introduce memory.events.local 0a198bb99132 mm, memcg: consider subtrees in memory.events 7d36553bd29d alinux: mm,memcg: export memory.high to v1 + +6202ab24c966 mm, memcg: throttle allocators when failing reclaim over memory.high +``` + + +## 2.18 Devmap cleanups + arm64 support +------- + +| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | +|:----:|:----:|:---:|:----:|:---------:|:----:| +| 2019/05/23 | Alexander Duyck | [Devmap cleanups + arm64 support](https://lore.kernel.org/patchwork/cover/1077792) | NA | v5 ☑ 5.3-rc1 | [PatchWork v5](https://lore.kernel.org/patchwork/cover/1077792) | + + +```cpp f72a099beb96 arm64: mm: add missing PTE_SPECIAL in pte_mkdevmap on arm64 1820ca632ed4 arm64: mm: implement pte_devmap support d7066a918302 mm: introduce ARCH_HAS_PTE_DEVMAP ``` +## 2.19 background reclaim +------- + + +| 文档链接 | 说明 | +|:-------:|:----:| +| Memcg后台异步回收 | Alibaba Cloud Linux 2 增加了 memcg 粒度的后台异步回收功能. 该功能的实现不同于全局kswapd内核线程的实现,并没有创建对应的 memcg kswapd 内核线程,而是采用了 workqueue机制来实现. | + ```cpp a29243e2e890 alinux: mm: Support kidled bbaee3afa992 alinux: mm: memcontrol: make distance between wmark_low and wmark_high configurable @@ -868,26 +865,56 @@ c69c12cc10ba alinux: mm: vmscan: make memcg kswapd set memcg state to dirty or w 49a3b46525f3 alinux: mm: vmscan: make it sane reclaim if cgwb_v1 is enabled ``` +## 2.20 persistent memory +------- + + +| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | +|:----:|:----:|:---:|:----:|:---------:|:----:| +| 2019/02/25 | Dave Hansen | [Introduce a device-dax bus-based device-model](https://lore.kernel.org/patchwork/cover/1004684) | NA | v5 ☑ 5.4-rc1 | [PatchWork v5](https://lore.kernel.org/patchwork/cover/1004684) | +| 2019/02/25 | Dave Hansen | [Allow persistent memory to be used like normal RAM](https://patchwork.kernel.org/project/linux-nvdimm/cover/20190225185727.BCBD768C@viggo.jf.intel.com) | NA | v5 ☑ 5.4-rc1 | [PatchWork v5](https://patchwork.kernel.org/project/linux-nvdimm/cover/20190225185727.BCBD768C@viggo.jf.intel.com) | +| 2019/02/25 | Dave Hansen | ["Hotremove" persistent memory](https://lore.kernel.org/patchwork/cover/1099159) | NA | v7 ☑ 5.3-rc1 | [PatchWork v7](https://lore.kernel.org/patchwork/cover/1099159) | + + ```cpp +4447e30357dc device-dax: fix memory and resource leak if hotplug fails +16980fcaaf4b device-dax: Add a 'resource' attribute +6686a85960ef drivers/dax: Allow to include DEV_DAX_PMEM as builtin +55a0741b0724 device-dax: "Hotplug" persistent memory for use like normal RAM + a9b17a5ef499 mm/resource: Let walk_system_ram_range() search child resources 567bed5755f7 mm/memory-hotplug: Allow memory resources to be children 0297fb96e113 mm/resource: Move HMM pr_debug() deeper into resource code 88e75600f8ca mm/resource: Return real error codes from walk failures + +be4a8d628f32 kernel, resource: check for IORESOURCE_SYSRAM in release_mem_region_adjustable +87e09e0a8438 resource: Clean it up a bit +536559fe8dc6 device-dax: Add a 'modalias' attribute to DAX 'bus' devices +e444f72fd606 device-dax: Add a 'target_node' attribute +1e16beccb215 device-dax: Auto-bind device after successful new_id +a0a4e71fced5 acpi/nfit, device-dax: Identify differentiated memory with a unique numa-node + +c827e296e0d8 device-dax: Add /sys/class/dax backwards compatibility +3f8deff3fcdf device-dax: Add support for a dax override driver +c2df7a3ab1e0 device-dax: Move resource pinning+mapping into the common driver +d491ea9e5af9 device-dax: Introduce bus + driver model +265e1089853f device-dax: Start defining a dax bus model +9910b7e1878e device-dax: Remove multi-resource infrastructure +4f3e3b40414a device-dax: Kill dax_region base +dcd3a988d44d device-dax: Kill dax_region ida ``` +## 2.21 x86/mm/cpa: Improve large page preservation handling +------- + + +| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | +|:----:|:----:|:---:|:----:|:---------:|:----:| +| 2018/09/17 | Srivatsa S. Bhat | [x86/mm/cpa: Improve large page preservation handling](https://lore.kernel.org/patchwork/cover/987147) | 优化 页面属性(CPA) 代码中的 try_preserve_large_page(), 降低 CPU 消耗. | v3 ☑ 4.20-rc1 | [PatchWork RFC v3](https://lore.kernel.org/patchwork/cover/987147) | + + ```cpp -6202ab24c966 mm, memcg: throttle allocators when failing reclaim over memory.high -a6f54bb03faa mm/zsmalloc.c: fix a -Wunused-function warning -4797417e5c19 x86/mm: Split vmalloc_sync_all() -``` - -a22c50279494 mm/swap_state.c: simplify total_swapcache_pages() with get_swap_device() -8afafd92a359 mm, swap: fix race between swapoff and some swap operations -0c22f660c7dc mm: swap: check if swap backing device is congested or not - - - da57ae3d8f47 x86/mm/cpa: Prevent large page split when ftrace flips RW on kernel text 9737e3ab95f7 x86/mm: Remove unused variable 'old_pte' d5c07e58eb5b x86/mm/cpa: Avoid the 4k pages check completely @@ -901,33 +928,172 @@ ea280ec727c9 x86/mm/cpa: Allow range check for static protections fcbec5ea6634 x86/mm/cpa: Rework static_protections() f6e4e6e88f6b x86/mm/cpa: Split, rename and clean up try_preserve_large_page() 52939d0dbbea x86/mm/init32: Mark text and rodata RO in one go +``` +## 2.22 SIMPLE OPTIMIZE +------- + +### task #31072503 +------- + + + +```cpp +362c19f4f21d mm: proactive compaction +``` + + + +### to #26809468 +------- + +```cpp +start_commit : b68e287533d2d3e802d56c8355d8ff23647f0029 +end_commit : 5be663e3cfcf50de91186799324ea7be49c3988b +b68e287533d2 mm: return zero_resv_unavail optimization +f85218310ce6 mm: zero remaining unavailable struct pages +``` + + +### to #29931646 +------- + +```cpp +63de663eb5b9 mm, page_alloc: skip ->waternark_boost for atomic order-0 allocations + +b893a7d56134 alinux: mm: completely disable swapout with negative swappiness +``` + +### task #25182720 +------- + +```cpp +7e6914774bc8 mm: do not allow MADV_PAGEOUT for CoW pages +``` + +### to #26782094 +------- + +```cpp +7d6cb94f148e alinux: mm: Pin code section of process in memory +``` + +### enable_context_readahead +------- + + +* [自研]增加了一个 /proc/sys/vm/enable_context_readahead 来关闭 [10be0b372cac readahead: introduce context readahead algorithm]() + +```cpp +2e38a0f2950e alinux: mm: add proc interface to control context readahead +``` + + + + +### vmalloc_sync_all +------- + +* 优化 vmalloc_sync_all, 降低 CPU 占用. + +```cpp +4797417e5c19 x86/mm: Split vmalloc_sync_all() +``` + +a22c50279494 mm/swap_state.c: simplify total_swapcache_pages() with get_swap_device() +8afafd92a359 mm, swap: fix race between swapoff and some swap operations +0c22f660c7dc mm: swap: check if swap backing device is congested or not +``` + + + +```cpp +https://lore.kernel.org/patchwork/patch/1143173/ +8e6bf4bc3a88 mm: memcontrol: fix network errors from failing __GFP_ATOMIC charges +``` + + +```cpp e2d3e3cb0d60 mm: workingset: tell cache transitions from workingset thrashing b027d193c877 mm: workingset: don't drop refault information prematurely +``` - - -8e358a027611 dump_stack: avoid the livelock of the dump_lock +```cpp +https://lore.kernel.org/patchwork/cover/1144285 6c944fc51f0a mm, vmstat: hide /proc/pagetypeinfo from normal users +``` + +```cpp +https://lore.kernel.org/patchwork/patch/1143667/ 2686f71fdcc5 mm: thp: handle page cache THP correctly in PageTransCompoundMap +``` + + +```cpp +https://lore.kernel.org/patchwork/cover/1141598/ 7dfa51beacac mm, meminit: recalculate pcpu batch and high limits after init completes -8e6bf4bc3a88 mm: memcontrol: fix network errors from failing __GFP_ATOMIC charges +``` + +```cpp +8e358a027611 dump_stack: avoid the livelock of the dump_lock +``` + +```cpp +https://lore.kernel.org/patchwork/cover/1111873 30cff8ab6ed7 mm/memory-failure: poison read receives SIGKILL instead of SIGBUS if mmaped more than once -91eec7692b94 hugetlbfs: don't access uninitialized memmaps in pfn_range_valid_gigantic() -f712e3066f75 mm/page_owner: don't access uninitialized memmaps when reading /proc/pagetypeinfo -bb6932c5a473 mm/slub: fix a deadlock in show_slab_objects() -9792afbd630b mm/memory-failure.c: don't access uninitialized memmaps in memory_failure() -01a44055a48a mmc: cqhci: Commit descriptors before setting the doorbell -6ea856efef9f fs/proc/page.c: don't access uninitialized memmaps in fs/proc/page.c +``` +```cpp +https://lore.kernel.org/patchwork/cover/1137389 +https://lore.kernel.org/patchwork/patch/1138644 +91eec7692b94 hugetlbfs: don't access uninitialized memmaps in pfn_range_valid_gigantic() +https://lore.kernel.org/patchwork/patch/1139559 +f712e3066f75 mm/page_owner: don't access uninitialized memmaps when reading /proc/pagetypeinfo +``` # 3 IO ------- +## 3.1 to #29998112(block: provide plug based way of signaling forced no-wait semantics) +------- + + +| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | +|:----:|:----:|:---:|:----:|:---------:|:----:| +| 2018/09/17 | Jens Axboe | [block: provide plug based way of signaling forced no-wait semantics](https://lore.kernel.org/patchwork/cover/1258166) | NA | v3 ☑ 5.9-rc1 | [PatchWork v1](https://lore.kernel.org/patchwork/cover/1258166) | + + +```cpp +start_commit : bcd36457603b9cc60d7cb12af33f49c26205b94d +end_commit : f708a4f2f70022106160e9af5ecdf0445c3a7464 +bcd36457603b ext4: flag as supporting buffered async reads +871cd85992b8 io_uring: fix async buffered reads when readahead is disabled +0a026341cfd2 io_uring: don't unconditionally set plug->nowait = true +2cd661819148 io_uring: don't re-setup vecs/iter in io_resumit_prep() is already there +bcd91b165fa1 io_uring: hold 'ctx' reference around task_work queue + execute +9742690c0ffb io_uring: fix NULL-mm for linked reqs +4f3438721367 io_uring: support true async buffered reads, if file provides it +acfc4d580d12 mm: add kiocb_wait_page_queue_init() helper +20076b974a61 btrfs: flag files as supporting buffered async reads +4001914fbf5d xfs: flag files as supporting buffered async reads +337bc770492d block: flag block devices as supporting IOCB_WAITQ +8512e751229e fs: add FMODE_BUF_RASYNC +079458e82cae mm: support async buffered reads in generic_file_buffered_read() +006b5f9cbd87 mm: add support for async page locking +9660b59fb7f5 mm: abstract out wake_page_match() from wake_page_function() +f0e3c8506f52 mm: allow read-ahead with IOCB_NOWAIT set +13e75b06830b io_uring: re-issue block requests that failed because of resources +1d658dc411bd io_uring: catch -EIO from buffered issue request failure +c20a670594c7 io_uring: always plug for any number of IOs +f44268f81295 block: provide plug based way of signaling forced no-wait semantics +3c8cefc2377c block: Disable write plugging for zoned block devices +``` + + ```cpp 48f9a1c0d29c alinux: dm: add support for IO polling a613fd3185fb alinux: block: add back ->poll_fn in request queue @@ -1034,6 +1200,7 @@ a7d3a2158cb5 alinux: Revert "x86/tsc: Try to adjust TSC if sync test fails" | 2021/01/15 | Yi Tao | [add CONFIG_CGROUP_CACHE](https://github.com/gatieme/linux/commit/021d0414e9c5c593431b6b448a73b465a0e9662b) | 自研特性, 加速 cgroup 的创建, 目前已经支持 memcg, cpu, cpuacct 等子 subsysten, 同时接管 cgroup kernfs node 的创建. | 自研 NA | [COMMIT](https://github.com/gatieme/linux/commit/021d0414e9c5c593431b6b448a73b465a0e9662b) | +其中引入了 [5b71d2f57720 alinux: cgroup: introduce cgroup_limit]() 引入了一个参数 /proc/sys/kernel/cgroup_limit 来限制各个 subsystem 的 cache size. ```cpp @@ -1052,7 +1219,7 @@ bea1123abee6 alinux: cgroup: introduce cache struct and function -## 3.2 rich container +## 3.2 RICH CONTAINER ------- @@ -1130,6 +1297,7 @@ c3694064258c virtiofs: Do not end request in submission context | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | |:----:|:----:|:---:|:---:|:----------:|:----:| +| 2019/09/09 | Jakub Kicinski | [mm/memory_hotplug: Export generic_online_page()](https://lore.kernel.org/patchwork/cover/1125874) | NA | v1 ☑ [5.5-rc1](https://kernelnewbies.org/Linux_5.5#Memory_management) | [PatchWork v1](https://lore.kernel.org/patchwork/cover/1125874) | | 2020/05/07 | Johannes Weiner | [virtio-mem: paravirtualized memory](https://lore.kernel.org/patchwork/cover/1237689) | NA | v2 ☑ [5.8-rc1](https://kernelnewbies.org/Linux_5.8#Memory_management) | [PatchWork v4](https://lore.kernel.org/patchwork/cover/1237689) | ```cpp @@ -1165,6 +1333,37 @@ a6785cdc8d2b mm, memory_hotplug: __offline_pages fix wrong locking 59df23d6178e mm: convert PG_balloon to PG_offline ``` +# to #26589565(mm / virtio: Provide support for free page reporting) +------- + +| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | +|:----:|:----:|:---:|:---:|:----------:|:----:| +| 2020/02/11 | Jakub Kicinski | [mm / virtio: Provide support for free page reporting](https://lore.kernel.org/patchwork/cover/1192763) | NA | v17 ☐ 5.7-rc1 | [PatchWork v17](https://lore.kernel.org/patchwork/cover/1192763) | + + +```cpp +start_commit : 8dcc27c2fa7dd97f3fa9297333005731c45bb314 +end_commit : 6909b2272d1f2a5e2099e819c13dccfd694a105e +8dcc27c2fa7d virtio-pci: check name when counting MSI-X vectors +f3018b29018b virtio-balloon: initialize all vq callbacks +fc0a63d8314c mm/page_reporting: add free page reporting documentation +d2932bdb681c mm/page_reporting: add budget limit on how many pages can be reported per pass +05c415bcf6f1 mm/page_reporting: rotate reported pages to the tail of the list +671b4f344c85 virtio-balloon: add support for providing free page reports to host +8256460e42d7 virtio-balloon: pull page poisoning config out of free page hinting +2b197730c24f mm: introduce Reported pages +06df03eda8de mm: add function __putback_isolated_page +999c6c60ed70 mm: use zone and order instead of free area in free_list manipulators +54c14b30a5e6 mm: move buddy list manipulations into helpers +006251135daa alinux: list: add list_is_first() and list_rotate_to_front() +65bae25e4f1d virtio-balloon: Fix memory leak when unloading while hinting is in progress +99cb3f49e59f virtio: don't allocate vqs when names[i] = NULL +a98451caa561 virtio_pci: use queue idx instead of array idx to set up the vq +67595fa8f831 virtio-balloon: VIRTIO_BALLOON_F_PAGE_POISON +1b7f4f070910 mm/page_poison: expose page_poisoning_enabled to kernel modules +0db17e1138de virtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_HINT +``` + ```cpp 414ddd93b45c namei: LOOKUP_{IN_ROOT,BENEATH}: permit limited ".." resolution @@ -1469,4 +1668,13 @@ https://lore.kernel.org/patchwork/patch/1266592 ```cpp 8d6fc8aaccf4 mm/memcontrol: fix OOPS inside mem_cgroup_get_nr_swap_pages() -``` \ No newline at end of file +``` + + +# Unixbench +------- + + +```cpp +8f93d2cad4c4 ovl: inherit SB_NOSEC flag from upperdir +``` diff --git a/study/kernel/00-DESCRIPTION/DEBUGGING.md b/study/kernel/00-DESCRIPTION/DEBUGGING.md index 56aaaa2..3468978 100644 --- a/study/kernel/00-DESCRIPTION/DEBUGGING.md +++ b/study/kernel/00-DESCRIPTION/DEBUGGING.md @@ -159,6 +159,14 @@ Date: Tue Feb 21 16:09:33 2017 +0100 | 2009/08/05 | Arjan van de Ven | [Implement crashkernel=auto](https://lore.kernel.org/patchwork/cover/166256) | 实现 crashkernel=auto . | v1 ☐ | [PatchWork](https://lore.kernel.org/patchwork/cover/166256) | +# 5 REFCOUNT +------- + + +| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | +|:----:|:----:|:---:|:----:|:---------:|:----:| +| 2019/11/21 | Will Deacon | [Rework REFCOUNT_FULL using atomic_fetch_* operations](https://lore.kernel.org/patchwork/cover/1156945) | 通过 atomic_fetch_* 操作来降低 cmpxchg() 带来的性能开销, 从而提升 refcount 机制的性能. | v4 ☑ [5.5-rc1]() | [PatchWork](https://lore.kernel.org/patchwork/cover/1156945) | +
* 本作品/博文 ( [AderStep-紫夜阑珊-青伶巷草 Copyright ©2013-2017](http://blog.csdn.net/gatieme) ), 由 [成坚(gatieme)](http://blog.csdn.net/gatieme) 创作. diff --git a/study/kernel/00-DESCRIPTION/MEMORY_MANAGER.md b/study/kernel/00-DESCRIPTION/MEMORY_MANAGER.md index 832bfc0..c0c0b42 100644 --- a/study/kernel/00-DESCRIPTION/MEMORY_MANAGER.md +++ b/study/kernel/00-DESCRIPTION/MEMORY_MANAGER.md @@ -233,7 +233,7 @@ Linux 为每个 zone 都设置了独立的 min, low 和 high 三个档位的 wat | 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 | |:----:|:----:|:---:|:----:|:---------:|:----:| -| 2018/11/23 | Mel Gorman | [Fragmentation avoidance improvements v5](https://lore.kernel.org/patchwork/cover/1016503) | 优化调度器的路径, 减少对 rq->lock 的争抢, 实现 lockless. | v5 ☑ 5.0-rc1 | [PatchWork v6](https://lore.kernel.org/patchwork/cover/1016503) | +| 2018/11/23 | Mel Gorman | [Fragmentation avoidance improvements v5](https://lore.kernel.org/patchwork/cover/1016503) | 伙伴系统页面分配时的反碎片化 | v5 ☑ 5.0-rc1 | [PatchWork v5](https://lore.kernel.org/patchwork/cover/1016503) | | 2020/02/25 | Mel Gorman | [Limit runaway reclaim due to watermark boosting](https://lore.kernel.org/patchwork/cover/1200172) | 优化调度器的路径, 减少对 rq->lock 的争抢, 实现 lockless. | v4 ☑ 4.4-rc1 | [PatchWork v6](https://lore.kernel.org/patchwork/cover/1200172) | ### 2.1.1.4 PCP(Per CPU Page) Allocation