description/memory: update patchwork series @20220713

This commit is contained in:
Cheng Jian committed 2022-07-13 22:03:15 +08:00
1 parent cee1af3fe5
commit fb986e9ff2
4 files changed
+100 -9

No files matched your search

+52 -9
View File
@@ -65,7 +65,7 @@ blogexcerpt: 虚拟化 & KVM 子系统
### 1.1.1 split lock detect
-------
[字节跳动技术团队的博客--深入剖析 split locks,i++ 可能导致的灾难](https://blog.csdn.net/ByteDanceTech/article/details/124701175)
[字节跳动技术团队的博客--深入剖析 split locks, i++ 可能导致的灾难](https://blog.csdn.net/ByteDanceTech/article/details/124701175)
拆分锁是指原子指令对跨越多个高速缓存行的数据进行操作. 由于原子性质, 在两条高速缓存行上工作时需要全局总线锁, 这反过来又会对整体系统性能造成很大的性能影响.
@@ -163,7 +163,9 @@ Intel Architecture Day 2021, 官宣了自己的服务于终端和桌面场景的
早在 2018 年, 苹果就发布过自家 AMP 硬件上的软硬协同优化的调度器, 中文专利号 [CN108984282A 具有闭环性能控制器的 AMP 体系结构的调度器/Scheduler for AMP architecture with closed loop performance controller](https://www.patentguru.com/cn/CN108984282A).
[Intel Hardware Feedback Interface "HFI" Driver Submitted For Linux 5.18](https://www.phoronix.com/scan.php?page=news_item&px=Intel-HFI-Thermal-Linux-5.18)
[Intel Hardware Feedback Interface "HFI" Driver Submitted For Linux 5.18](https://www.phoronix.com/scan.php?page=news_item&px=Intel-HFI-Thermal-Linux-5.18).
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|:----:|:----:|:---:|:----:|:---------:|:----:|
@@ -178,6 +180,8 @@ intel_thermal_interrupt()
-=> queue_delayed_work(hfi_updates_wq, &hfi_instance->update_work, HFI_UPDATE_INTERVAL);
```
HFI 创建了一个名为 hfi-updates 的 workqueue, 最终通过 hfi_instance->update_work 即 hfi_update_work_fn 来更新信息.
```cpp
hfi_update_work_fn
-=> update_capabilities
@@ -275,13 +279,35 @@ SGX 旨在以硬件安全为强制性保障, 不依赖于固件和软件的安
[SGX技术的分析和研究](http://www.jos.org.cn/html/2018/9/5594.htm)
| 版本 | 特性 | PatchSet |
|:----:|:---:|---------:|
| v5.11 | Linux 支持 Intel SGX | [Intel SGX foundations](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=bc4bac2ecef0e47fd5c02f9c6f9585fd477f9beb) |
| v5.13 | Linux 虚拟化支持 Intel SGX | [KVM SGX virtualization support](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=fe7e948837f312d87853b3fce743795d1ae3715a), [KVM SGX virtualization support (KVM part)](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=fe7e948837f312d87853b3fce743795d1ae3715a) |
|
#### 1.6.1.1 SGX support
-------
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|:----:|:----:|:---:|:----:|:---------:|:----:|
| 2020/11/13 | Jarkko Sakkinen <jarkko@kernel.org> | [Intel SGX foundations](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=bc4bac2ecef0e47fd5c02f9c6f9585fd477f9beb) | 20201112220135.165028-1-jarkko@kernel.org | v41 ☑✓ 5.11-rc1 | [LORE v41,0/24](https://lore.kernel.org/all/20201112220135.165028-1-jarkko@kernel.org) |
| 2021/03/19 | Kai Huang <kai.huang@intel.com> | [KVM SGX virtualization support](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=fe7e948837f312d87853b3fce743795d1ae3715a) | cover.1616136307.git.kai.huang@intel.com | v3 ☑✓ 5.13-rc1 | [LORE v3,0/25](https://lore.kernel.org/all/cover.1616136307.git.kai.huang@intel.com) |
| 2021/04/12 | Kai Huang <kai.huang@intel.com> | [KVM SGX virtualization support (KVM part)](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=fe7e948837f312d87853b3fce743795d1ae3715a) | cover.1618196135.git.kai.huang@intel.com | v5 ☑✓ 5.13-rc1 | [LORE v5,0/11](https://lore.kernel.org/all/cover.1618196135.git.kai.huang@intel.com) |
| 2020/11/13 | Jarkko Sakkinen <jarkko@kernel.org> | [Intel SGX foundations](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=bc4bac2ecef0e47fd5c02f9c6f9585fd477f9beb) | Intel SGX 支持. 参见 phoronix 报道 [After Years Of Work With 40+ Revisions, Intel SGX Looks Like It Will Land In Linux 5.11](https://www.phoronix.com/scan.php?page=news_item&px=Intel-SGX-Linux-5.11) | v41 ☑✓ [5.11-rc1](https://lore.kernel.org/lkml/20201214114200.GD26358@zn.tnic/) | [LORE v41,0/24](https://lore.kernel.org/all/20201112220135.165028-1-jarkko@kernel.org) |
| 2021/03/19 | Kai Huang <kai.huang@intel.com> | [KVM SGX virtualization support](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=fe7e948837f312d87853b3fce743795d1ae3715a) | Linux 虚拟化支持 Intel SGX | v3 ☑✓ 5.13-rc1 | [LORE v3,0/25](https://lore.kernel.org/all/cover.1616136307.git.kai.huang@intel.com) |
| 2021/04/12 | Kai Huang <kai.huang@intel.com> | [KVM SGX virtualization support (KVM part)](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=fe7e948837f312d87853b3fce743795d1ae3715a) | Linux 虚拟化支持 Intel SGX, 参见 phoronix 报道 [Linux 5.13 Bringing Code For Intel SX Within KVM Guests](https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.13-SGX-KVM-Guests) | v5 ☑✓ 5.13-rc1 | [LORE v5,0/11](https://lore.kernel.org/all/cover.1618196135.git.kai.huang@intel.com) |
| 2021/11/02 | Catalin Marinas <catalin.marinas@arm.com> | [Basic recovery for machine checks inside SGX](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=3ad6fd77a2d62e8f4465b429b65805eaf88e1b9e) | 支持混合微架构的 CPU(Alder Lake CPU) | v11 ☑✓ 5.17-rc1 | [Patchwork v11,0/7](https://patchwork.kernel.org/project/linux-mm/cover/20211026220050.697075-1-tony.luck@intel.com) |
#### 1.6.1.1 SGX2 support
-------
[Which Platforms Support Intel® Software Guard Extensions (Intel® SGX) SGX2?](https://www.intel.com/content/www/us/en/support/articles/000058764/software/intel-security-products.html)
[Intel SGX2 / Enclave Dynamic Memory Management Patches Posted For Linux](https://www.phoronix.com/scan.php?page=news_item&px=Intel-SGX2-Linux-Patches)
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|:----:|:----:|:---:|:----:|:---------:|:----:|
| 2021/12/01 | Reinette Chatre <reinette.chatre@intel.com> | [x86/sgx and selftests/sgx: Support SGX2](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=e0a5915f1cca21da8ffc0563aea9fa1df5d16fb4) | 参见 phoronix 报道 [Intel SGX2 Support Poised To Land In Linux 5.20](https://www.phoronix.com/scan.php?page=news_item&px=Intel-SGX2-Landing-Linux-5.20) | v1 ☐☑✓ | [LORE v1,0/25](https://lore.kernel.org/all/cover.1638381245.git.reinette.chatre@intel.com)<br>*-*-*-*-*-*-*-* <br>[LORE v5,00/31](https://lore.kernel.org/lkml/cover.1652137848.git.reinette.chatre@intel.com) |
### 1.6.2 CET
-------
@@ -440,6 +466,23 @@ TLB entry shootdown 常常或多或少的带来一些性能问题.
| flush_tlb_kernel_range | 无效掉内核态 start ~ end 区间内的所有 TLB entry |
| local_flush_tlb_all | 无效掉本 CPU 上所有的 TLB entry. 无需使用 TLB.IS |
### 2.2.4 BATCHED_UNMAP_TLB_FLUSH
-------
在 x86 上, BATCHED_UNMAP_TLB_FLUSH 用于批处理 TLB, 在解除页面映射后, 发送一个 IPI 到 TLB 刷新所有条目, 而不是发送一个 IPI 来刷新每个单独的条目.
在 arm64 TLB shootdown 是由硬件完成的. 刷新指令是内部共享的. 本地刷新限制在启动 (每个 CPU 1 次) 和任务获得新的 ASID 时. 像 ARM64 这样的平台有硬件 TLB shootdown 广播. 它们不维护 mm_cpumask, 只是发送 tlbi 和相关的同步指令用于 TLB 刷新. 在这种情况下, Task 的 mm_cpumask 通常是空的. 在这类平台上, 我们也允许延迟 TLB 刷新.
在 x86 上, 批处理和延迟 TLB shootdown 的解决方案使 TLB shootdown 的性能提高了 90%. 在 arm64 上, 硬件可以在没有软件 IPI 的情况下执行 TLB shootdown. 但同步 tlbi 仍然相当昂贵.
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|:---:|:----:|:---:|:----:|:---------:|:----:|
| 2021/02/23 | Barry Song <song.bao.hua@hisilicon.com> | [Documentation/features: mark BATCHED_UNMAP_TLB_FLUSH doesn't apply to ARM64](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6bfef171d0d74cb050112e0e49feb20bfddf7f42) | 在 x86 上, BATCHED_UNMAP_TLB_FLUSH 用于批处理 TLB, 在解除页面映射后, 发送一个 IPI 到 TLB 刷新所有条目. 在 arm64 上, TLB shootdown 是由硬件完成的. 刷新指令是内部共享的. 本地刷新限制在启动(每个 CPU 1 次)和任务获得新的 ASID 时. 因此, 将该特性标记为 "TODO" 是不恰当的. 所以这个补丁对某些架构上不需要的这类功能标记为 "N/A". | v1 ☑✓ 5.13-rc1 | [LORE](https://lore.kernel.org/all/20210223003230.11976-1-song.bao.hua@hisilicon.com) |
| 2022/07/11 | Barry Song <21cnbao@gmail.com> | [mm: arm64: bring up BATCHED_UNMAP_TLB_FLUSH](https://lore.kernel.org/all/20220711034615.482895-1-21cnbao@gmail.com) | 虽然 ARM64 有硬件来完成 TLB shootdown, 但硬件广播的开销并不小. 最简单的微基准测试表明, 即使在只有 8 核的 snapdragon 888 上, ptep_clear_flush() 的开销也是巨大的, 即使只分页一个进程映射的一个页面, perf top 显示这造成 5.36% 的 CPU 消耗. 当页面由多个进程映射或硬件有更多 CPU 时, 由于 TLB 分解的可扩展性较差, 成本应该会更高. 在这种场景下同样的基准测试可能会导致大约 100 核的 ARM64 服务器上 16.99% 的 CPU 消耗. 该补丁集利用了现有的 BATCHED_UNMAP_TLB_FLUSH 进行了优化.<br>1. 仅在第一阶段 arch_tlbbatch_add_mm() 中发送 tlbi 指令.<br>2. 等待 dsb 完成 tlbi, 同时在 arch_tlbbatch_flush() 中执行 tlbbatch sync. 在 snapdragon 上的测试表明, ptep_clear_flush() 的开销已被该补丁集优化掉. 即使在 snapdragon 888 上通过单个进程映射一个页面, 微基准也能提升 5% 的性能. | v2 ☐☑✓ | [LORE v1,0/4](https://lore.kernel.org/lkml/20220707125242.425242-1-21cnbao@gmail.com)<br>*-*-*-*-*-*-*-* <br>[LORE v2,0/4](https://lore.kernel.org/all/20220711034615.482895-1-21cnbao@gmail.com) |
## 2.3 指令加速
-------
@@ -805,7 +848,7 @@ https://blogs.vmware.com/vsphere/2021/10/introducing-project-capitola.html
## 6.7 指令转译
-------
Rosetta 是一个转译过程, 允许用户在 Apple Silicon 上运行包含 x86_64 指令的应用程序。在 macOS 中, 这允许为基于英特尔的 Mac 电脑构建的应用程序在 Apple Silicon 上无缝运行; Rosetta 可以在 ARM Linux 虚拟机中为英特尔 Linux 应用程序提供同样的功能.
Rosetta 是一个转译过程, 允许用户在 Apple Silicon 上运行包含 x86_64 指令的应用程序. 在 macOS 中, 这允许为基于英特尔的 Mac 电脑构建的应用程序在 Apple Silicon 上无缝运行; Rosetta 可以在 ARM Linux 虚拟机中为英特尔 Linux 应用程序提供同样的功能.
[macOS 13 Adding Ability To Use Rosetta In ARM Linux VMs For Speedy x86_64 Linux Binaries](https://www.phoronix.com/scan.php?page=news_item&px=macOS-13-Rosetta-Linux-Binaries)
@@ -815,7 +858,7 @@ Rosetta 是一个转译过程, 允许用户在 Apple Silicon 上运行包含 x86
Tachyum 宣布其设计一款完全通用的处理器 Prodigy T16128, 预计 2023 年发布, [Tachyum's Monster 128 Core 5.7GHz 'Universal Processor' Does Everything](https://www.tomshardware.com/news/tachyum-128-core-all-purpose-cpu), 号称一款芯片上可以同时运行通用计算, 高性能计算以及 AI 等业务和负载, 原生支持 x86, ARM, RISC-V 和 ISA 的二进制.
Google Google 推出[芯片设计门户网站](https://developers.google.com/silicon), 计划名为 Open MPW Shuttle Program, 允许任何人利用开源 PDK 和其他开源 EDA 工具来提交开源集成电路设计, Google 会为他们免费制造, 不会收取任何费用。虽然芯片制造是在 130 纳米工艺(SKY130)上完成的, 但这一计划对资金有限的开源硬件项目具有巨大的推动作用.
Google Google 推出[芯片设计门户网站](https://developers.google.com/silicon), 计划名为 Open MPW Shuttle Program, 允许任何人利用开源 PDK 和其他开源 EDA 工具来提交开源集成电路设计, Google 会为他们免费制造, 不会收取任何费用. 虽然芯片制造是在 130 纳米工艺(SKY130)上完成的, 但这一计划对资金有限的开源硬件项目具有巨大的推动作用.
中国科学院大学("国科大")的 ["一生一芯" 计划](https://ysyx.org).
@@ -846,14 +889,14 @@ openEuler 提供了 [openEuler/prefetch_tuning](https://gitee.com/openeuler/pref
| 指令集架构 | 描述 | 代表架构 |
|:--------:|:----:|:------:|
| CISC (Complex instruction set computer) 复杂指令集计算机 | NA | HP 的 PA-RISC,IBM 的 PowerPC,Compaq(被并入 HP)的 Alpha,MIPS 公司的 MIPS,SUN 公司的 SPARC 等. |
| CISC (Complex instruction set computer) 复杂指令集计算机 | NA | HP 的 PA-RISC, IBM 的 PowerPC, Compaq(被并入 HP)的 Alpha, MIPS 公司的 MIPS, SUN 公司的 SPARC 等. |
| RISC (Reduced instruction set computer) 精简指令集计算机 | NA | NA |
| [MISC (Minimal instruction set computer), 最小指令集计算机](http://en.wikipedia.org/wiki/Minimal_instruction_set_computer) | [从零开始手敲自举编译器(一): MISC 概览](https://zhuanlan.zhihu.com/p/412201989) 和 [github-whoiscc/miniboot/](https://github.com/whoiscc/miniboot) |
| [OISC (One instruction set computer, 单指令集计算机)](http://en.wikipedia.org/wiki/One_instruction_set_computer) | NA | NA |
| [ZISC (Zero instruction set computer)](https://en.wikipedia.org/wiki/Zero_instruction_set_computer) | NA | NA |
| VLIM (Very long instruction word) 超长指令字架构 | 通过将多条指令放入一个指令字, 有效的提高了 CPU 各个计算功能部件的利用效率, 提高了程序的性能. | NA |
| EPIC (Explicity parallel instruction computing) 显示并行指令集计算 | NA | Intel 的 IA-64 |
| EDGE | 显式数据图执行 (Explicit Data Graph Execution) 的指令集体系结构, 也被称为 EDGE 架构. | [微软处理器架构是新瓶装酒 历史早已证明是死路一条](http://www.360doc.com/content/18/0623/10/22587800_764605025.shtml), [与高通联手打造全新处理器架构,微软计算芯片界的至尊魔戒终浮现](https://zhuanlan.zhihu.com/p/38340253) | Microsoft 的 E2 |
| EDGE | 显式数据图执行 (Explicit Data Graph Execution) 的指令集体系结构, 也被称为 EDGE 架构. | [微软处理器架构是新瓶装酒 历史早已证明是死路一条](http://www.360doc.com/content/18/0623/10/22587800_764605025.shtml), [与高通联手打造全新处理器架构, 微软计算芯片界的至尊魔戒终浮现](https://zhuanlan.zhihu.com/p/38340253) | Microsoft 的 E2 |
<br>
@@ -6998,6 +6998,21 @@ ZONE_MOVABLE 一个 pseudo zone, 它实际是从内核划分的某个 zone 中
[都 2022 年了, 这 20 篇 Linux 内存管理的期刊论文, 你读了吗?](https://zhuanlan.zhihu.com/p/450826949)
# 15 测试
-------
## 15.1 Intel® Memory Latency Checker (Intel® MLC)
-------
INTEL MLC 可以测量出机器的内存访问延迟和带宽, 并且可以观察出它们是如何随着机器负载的增加而变化的. Intel 的处理器有一些内存预取功能, 可能会影响测试结果.
[INTEL MLC (Memory Latency Checker) 介绍](https://zhuanlan.zhihu.com/p/359823092)
[MLC 内存测试结果解读到 CPU 架构设计分析](https://zhuanlan.zhihu.com/p/447936509)
[Intel® Memory Latency Checker](https://www.intel.com/content/www/us/en/developer/articles/tool/intelr-memory-latency-checker.html)
---
**引用:**
@@ -111,6 +111,37 @@ https://www.phoronix.com/scan.php?page=news_item&px=UDP-IPV6-5P-Optimization
|:----:|:----:|:---:|:----:|:---------:|:----:|
| 2021/12/22 | Wander Lairson Costa <wander@redhat.com> | [tty: serial: Use fifo in 8250 console driver](https://lwn.net/Articles/722293) | 参见报道 [Linux Serial Console Driver Lands Patch For Possible ~25% Performance Improvement](https://www.phoronix.com/scan.php?page=news_item&px=Linux-Serial-16550-FIFO) | v1 ☑ 5.17-rc1 | [PatchWork v4,00/10](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5021d709b31b8a14317998a33cbc78be0de9ab30) |
# 6 LIB
-------
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|:---:|:----:|:---:|:----:|:---------:|:----:|
| 2022/07/10 | Yu-Jen Chang <arthurchang09@gmail.com> | [Optimize memchr()](https://lore.kernel.org/all/20220710142822.52539-1-arthurchang09@gmail.com) | 优化 Linux 内核的 memchr() 实现, 以便更快地在内存块中定位字符. 这组补丁使得 memchr 在处理长字符串时可以快 4 倍左右. memchr() 的原始版本是使用按字节比较技术实现的, 该技术在 CPU 中不完全使用 64 位或 32 位寄存器. 使用全字范围的比较, 以便在 CPU 上可以同时比较 8 个字符. 参见 [Optimized memchr() Implementation For The Linux Kernel Up To ~4x Faster](https://www.phoronix.com/scan.php?page=news_item&px=Linux-Kernel-Faster-memchr). | v1 ☐☑✓ | [LORE v1,0/2](https://lore.kernel.org/all/20220710142822.52539-1-arthurchang09@gmail.com) |
# 10 评测
-------
## 10.1 系统评测
-------
Intel AderLake 引入大小核之后, Windows & Intel 联盟做了足够多的优化, 但是 Linux 还没有针对性的优化, 因此在 Core i9 12900K(Alder Lake) 上测试, Window 11 性能领先于 Linux. [Windows 11 Better Than Linux Right Now For Intel Alder Lake Performance](https://www.phoronix.com/scan.php?page=article&item=alderlake-windows-linux&num=1).
随后多个 Linux 版本都对性能进行了优化和修复. 参见 phoronix 报道 [Linux 5.15.35 Released With Important Performance Fix For Intel Alder Lake](https://www.phoronix.com/scan.php?page=article&item=linux-51535-adl&num=1).
[Windows 11 vs. Linux Performance For Intel Core i9 12900K In Mid-2022](https://www.phoronix.com/scan.php?page=article&item=windows-linux-mid22adl&num=1).
## 10.2 内核评测
-------
| 日期 | 版本 | 评测 |
|:---:|:----:|:---:|
| 2022/07/11 | [Linux 5.19 Looking Real Good On The HP Dev One, XanMod + Liquorix Also Tested](https://www.phoronix.com/scan.php?page=article&item=hp-devone-kernels) | 基于 HP Dev One 与 AMD Ryzen 7 PRO 5850U 测试了 Mainline 5.19 相比较 Pop_OS Stock 5.17/Mainline 5.18/XanMod 5.18/Liquorix 5.18 的性能. |
<br>
* 本作品/博文 ( [AderStep-紫夜阑珊-青伶巷草 Copyright ©2013-2017](http://blog.csdn.net/gatieme) ), 由 [成坚(gatieme)](http://blog.csdn.net/gatieme) 创作.
+2
View File
@@ -599,6 +599,7 @@ coscheduling 协同调度是为了解决云服务场景, 为不同用户提供
| 2021/10/18 | Josh Don <joshdon@google.com> | [sched/core: forced idle accounting](https://lkml.org/lkml/2021/10/7/1187) | 增加了 "强制空闲" 时间的统计. 当 SMT 某个 CPU pick 了一个任务, 但是 sibling CPU 上找不到与其相互信任(cookie 相同)的任务时, sibling CPU 将不得不进入 force idle 状态, 即使有其他进程(互不信任的)在 RQ 中等待.<br>强制空闲时间是衡量启用 core scheduling 的一种指标. 可以估计强制闲置而导致的 CPU 容量损失. | v10 ☑ 5.14-rc1 | [2021/10/08 LKML v1](https://lkml.org/lkml/2021/10/7/1187)<br>*-*-*-*-*-*-*-* <br>[2021/10/18 LKML v2](https://lkml.org/lkml/2021/10/18/1529) |
| 2021/11/23 | Christian Brauner | [core scheduling: add PR_SCHED_CORE_SHARE](https://lkml.org/lkml/2021/11/23/474) | NA | v10 ☑ 5.14-rc1 | [2021/10/08 LKML v1](https://lkml.org/lkml/2021/11/23/474) |
| 2021/12/16 | Joel Fernandes <joel@joelfernandes.org> | [High latency with core scheduling](https://lore.kernel.org/all/Ybvcu5RIwV+Vko09@google.com) | Ybvcu5RIwV+Vko09@google.com | v1 ☐☑✓ | [LORE](https://lore.kernel.org/all/Ybvcu5RIwV+Vko09@google.com) |
| 2022/06/28 | Cruz Zhao <CruzZhao@linux.alibaba.com> | [sched/core: Optimize load balance of core scheduling](https://lore.kernel.org/all/1656403045-100840-1-git-send-email-CruzZhao@linux.alibaba.com) | 相同 cookie 的任务被认为是相互信任的, 可以在 SMT 上的两个兄弟 CPU 上运行, 它们可以在选择下一个任务时配对, 并且可以避免强制闲置. 为了实现这个目标, 必须统计运行队列中有多少带有此 cookie 的任务. 当进行此统计时, 作者也发现一个错误, 当我们更新一个未写入 cookie 的任务的 cookie 时, 任务不会进入 core 的 rbtree, 所以作者同时也修复了这个错误. | v1 ☐☑✓ | [LORE v1,0/3](https://lore.kernel.org/all/1656403045-100840-1-git-send-email-CruzZhao@linux.alibaba.com) |
@@ -3575,6 +3576,7 @@ Oracle 数据库具有类似的虚拟化功能, 称为 Oracle Multitenant, 其
|:----:|:----:|:----:|:---:|:----------:|:---:|
| 2022/06/12 | Chen Yu <yu.c.chen@intel.com> | [sched/fair: Introduce SIS_UTIL to search idle CPU based on sum of util_avg](https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?h=sched/core&id=70fb5ccf2ebb09a0c8ebba775041567812d45f86) | | v2 ☐☑✓ | [LORE v1](https://lore.kernel.org/all/20220207034013.599214-1-yu.c.chen@intel.com)<br>*-*-*-*-*-*-*-* <br>[LORE v2](https://lore.kernel.org/all/20220310005228.11737-1-yu.c.chen@intel.com)<br>*-*-*-*-*-*-*-* <br>[LORE v3](https://lore.kernel.org/lkml/20220428182442.659294-1-yu.c.chen@intel.com))<br>*-*-*-*-*-*-*-* <br>[LORE v4](https://lore.kernel.org/all/20220612163428.849378-1-yu.c.chen@intel.com) |
| 2022/06/19 | Abel Wu <wuyun.abel@bytedance.com> | [sched/fair: improve scan efficiency of SIS](https://lore.kernel.org/all/20220619120451.95251-1-wuyun.abel@bytedance.com) | 引入 SIS 过滤器, 以帮助在扫描深度有限时提高扫描效率. 过滤器仅包含未占用的 CPU, 并在 SMT 级负载平衡期间更新. 预计系统过载越多, 扫描的 CPU 就越少. [introduce sched-idle balancing](https://lore.kernel.org/all/20220217154403.6497-1-wuyun.abel@bytedance.com) 的其中一个补丁, v3 之后单独发到社区 [v3 sched/fair: filter out overloaded cpus in SIS](https://lore.kernel.org/all/20220505122331.42696-1-wuyun.abel@bytedance.com). v4 之后扩展成一个补丁集. | v4 ☐☑✓ | [2022/05/05, LORE v3](https://lore.kernel.org/all/20220505122331.42696-1-wuyun.abel@bytedance.com)<br>*-*-*-*-*-*-*-* <br>[2022/06/19, LORE v4,0/7](https://lore.kernel.org/all/20220619120451.95251-1-wuyun.abel@bytedance.com) |
| 2022/07/12 | Abel Wu <wuyun.abel@bytedance.com> | [sched/fair: SIS improvements and cleanups](https://lore.kernel.org/all/20220712082036.5130-1-wuyun.abel@bytedance.com) | TODO | v1 ☐☑✓ | [LORE v1,0/5](https://lore.kernel.org/all/20220712082036.5130-1-wuyun.abel@bytedance.com) |
### 5.3.5 SIS avg_idle