mirror of
https://github.com/gatieme/LDD-LinuxDeviceDrivers.git
synced 2026-08-17 16:52:08 +08:00
description/open_source: update phoronix to date 20221010
This commit is contained in:
@@ -108,6 +108,9 @@ v5.7 引入了拆分锁检测的支持, 这依赖于 x86_64 intel CPU 遇到拆
|
||||
## 1.2 指令加速
|
||||
-------
|
||||
|
||||
### 1.2.1 向量运算
|
||||
-------
|
||||
|
||||
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|
||||
|:----:|:----:|:---:|:----:|:---------:|:----:|
|
||||
| 2021/07/30 | "Chang S. Bae" <chang.seok.bae@intel.com> | [x86: Support Intel Advanced Matrix Extensions](https://lore.kernel.org/lkml/20210730145957.7927-1-chang.seok.bae@intel.com) | 支持即将发布的英特尔[高级矩阵扩展(AMX)](https://software.intel.com/content/dam/develop/external/us/en/documents-tps/architecture-instruction-set-extensions-programming-reference.pdf), [AMX](https://software.intel.com/content/www/us/en/develop/documentation/cpp-compiler-developer-guide-and-reference/top/compiler-reference/intrinsics/intrinsics-for-intel-advanced-matrix-extensions-intel-amx-instructions.html) 由可配置的 TMM"TILE" 寄存器和操作它们的新 CPU 指令组成. TMUL (Tile matrix MULtiply)是第一个利用新寄存器的运算符, 我们预计将来会有更多的指令. | v9 ☐ | [Patchwork v9,00/26](https://lore.kernel.org/lkml/20210730145957.7927-1-chang.seok.bae@intel.com) |
|
||||
@@ -115,6 +118,16 @@ v5.7 引入了拆分锁检测的支持, 这依赖于 x86_64 intel CPU 遇到拆
|
||||
| 2021/08/12 | Tianjia Zhang <tianjia.zhang@linux.alibaba.com> | [support test GCM/CCM mode for SM4](https://lore.kernel.org/lkml/20210812131748.81620-1-tianjia.zhang@linux.alibaba.com) | NA | v1 ☐ | [Patchwork 0/3](https://lore.kernel.org/lkml/20210812131748.81620-1-tianjia.zhang@linux.alibaba.com), [LKML](https://lkml.org/lkml/2021/8/13/161) |
|
||||
| 2021/08/18 | Tianjia Zhang <tianjia.zhang@linux.alibaba.com> | [add AES-NI/AVX2/x86_64 implementation](https://lore.kernel.org/linux-crypto/20210818033117.91717-1-tianjia.zhang@linux.alibaba.com) | 这个补丁集导出了 SM4 AESNI/AVX 算法实现的一些常用函数, 并用这些函数实现 AESNI/AVX2 的加速.<br>主要算法实现来自 libgcrypt 和 [Markku Juhani 的 SM4 AES-NI 工作](https://github.com/mjosaarinen/sm4ni). | v1 ☐ | [Patchwork 0/2](https://lore.kernel.org/linux-crypto/20210818033117.91717-1-tianjia.zhang@linux.alibaba.com) |
|
||||
|
||||
### 1.2.2 Flexible Return and Event Delivery (FRED)
|
||||
-------
|
||||
|
||||
[Intel Preps The Linux Kernel For LKGS - Part Of FRED](https://www.phoronix.com/news/Intel-LKGS-Linux-Patches)
|
||||
|
||||
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|
||||
|:---:|:----:|:---:|:----:|:---------:|:----:|
|
||||
| 2022/10/06 | Xin Li <xin3.li@intel.com> | [Enable LKGS instruction](https://lore.kernel.org/all/20221006154041.13001-1-xin3.li@intel.com) | TODO | v1 ☐☑✓ | [LORE v1,0/6](https://lore.kernel.org/all/20221006154041.13001-1-xin3.li@intel.com) |
|
||||
|
||||
|
||||
|
||||
## 1.3 架构上新想法
|
||||
-------
|
||||
|
||||
@@ -75,6 +75,10 @@ blogexcerpt: FZF 是目前最快的模糊搜索工具. 使用golang编写. 结
|
||||
# 2 unikernel
|
||||
-------
|
||||
|
||||
Unikernel 是一种专门的操作系统, 其中应用程序直接与内核链接, 并以管理模式运行. 这允许开发人员对内核实现特定于应用程序的优化, 应用程序可以直接调用这些优化(无需经过系统调用路径). 应用程序可以控制调度和资源管理, 并直接访问硬件. 应用程序和内核可以联合优化, 例如通过 LTO、PGO 等. 所有这些优化和其他优化都为应用程序提供了比通用操作系统更大的性能优势.
|
||||
|
||||
[An overview of approaches-PROJECTS/Open source work on unikernels](http://unikernel.org/projects)
|
||||
|
||||
|
||||
* KML(Kernel Mode Linux : Execute user processes in kernel mode)
|
||||
|
||||
@@ -82,6 +86,7 @@ blogexcerpt: FZF 是目前最快的模糊搜索工具. 使用golang编写. 结
|
||||
|:----:|:----:|:---:|:----:|:---------:|:----:|
|
||||
| 2015/04/16 | Toshiyuki Maeda | [Kernel Mode Linux : Execute user processes in kernel mode](http://web.yl.is.s.u-tokyo.ac.jp/~tosh/kml) | 内核直接执行用户态程序. | v1 ☐ [4.0](http://web.yl.is.s.u-tokyo.ac.jp/~tosh/kml/kml/for4.x) | [Patch](https://github.com/sonicyang/KML) |
|
||||
| 2018/11/23 | Hsuan-Chi Kuo <hckuo2@illinois.edu> | [Lupine: Linux in Unikernel Clothes](https://github.com/hckuo/Lupine-Linux) | 通过内核配置和(KML)间接清除系统调用的影响, 从而使得 Linux 的性能达到持平甚至优于 unikernel 的性能. | ☐ | [Github](https://github.com/hckuo/Lupine-Linux), [159_kuo_slides.pdf](https://www.eurosys2020.org/wp-content/uploads/2020/04/slides/159_kuo_slides.pdf) |
|
||||
| 2022/10/03 | Ali Raza <aliraza@bu.edu> | [Unikernel Linux (UKL)](https://lore.kernel.org/all/20221003222133.20948-1-aliraza@bu.edu) | 参见 [Experimental Patches Adapt Linux For A Unikernel Design](https://www.phoronix.com/news/Linux-Unikernel-RFC). | v1 ☐☑✓ | [LORE v1,0/10](https://lore.kernel.org/all/20221003222133.20948-1-aliraza@bu.edu), [Github](https://github.com/unikernelLinux/ukl) |
|
||||
|
||||
|
||||
# 3 RONX
|
||||
|
||||
@@ -279,7 +279,7 @@ percpu rw 信号量是一种新的读写信号量设计, 针对读取锁定进
|
||||
| 2018/01/29 | Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com> | [membarrier: Provide core serializing command](https://lore.kernel.org/patchwork/cover/843003) | 引入 MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED. | v6 ☑ 4.16-rc1 | [PatchWork v5](https://lore.kernel.org/patchwork/cover/835747)<br>*-*-*-*-*-*-*-* <br>[PatchWork v6](https://lore.kernel.org/patchwork/cover/398912) |
|
||||
|
||||
|
||||
# 5 RCU()
|
||||
# 5 RCU
|
||||
-------
|
||||
|
||||
[What is RCU, Fundamentally?](https://lwn.net/Articles/262464)
|
||||
@@ -292,6 +292,8 @@ percpu rw 信号量是一种新的读写信号量设计, 针对读取锁定进
|
||||
|:----:|:----:|:---:|:----:|:---------:|:----:|
|
||||
| 2019/06/01 | "Joel Fernandes (Google)" <joel@joelfernandes.org> | [Harden list_for_each_entry_rcu() and family](https://lore.kernel.org/patchwork/cover/1082845) | 本系列增加了一个新的内部函数rcu_read_lock_any_held(), 该函数在调用这些宏时检查reader节是否处于活动状态. 如果不存在reader section, 那么list_for_each_entry_rcu()的可选第四个参数可以是一个被计算的lockdep表达式(类似于rcu_dereference_check()的工作方式). . | RFC ☑ 5.4-rc1 | [PatchWork RFC,0/6](https://lore.kernel.org/patchwork/cover/1082845) |
|
||||
|
||||
Google 的 Joel Fernandes 等发现 RCU 并没有很好的节能, 在 Android 和 ChromeOS 系统的功耗方面, RCU 占据了比较大的比重. 他们在 LPC-2022 上演示了他们在延迟 RCU 处理等降低 RCU 功耗和底噪的工作. 参见 [Make RCU do less (& later) !](https://lpc.events/event/16/contributions/1204).
|
||||
|
||||
|
||||
|
||||
# 6 FUTEX
|
||||
@@ -339,13 +341,26 @@ Lockdep 跟踪锁的获取顺序, 以检测死锁, 以及 IRQ 和 IRQ 启用/禁
|
||||
|
||||
参见 [[PATCH RFC v6 00/21] DEPT(Dependency Tracker)](https://lore.kernel.org/lkml/1651652269-15342-1-git-send-email-byungchul.park@lge.com), 分析了 Lockdep 的问题以及引入 Dependency Tracker 的背景和设计思路.
|
||||
|
||||
但是 Lockdep 依旧有太多问题
|
||||
但是 Lockdep 依旧有太多问题:
|
||||
|
||||
|
||||
1. 错误消息有时令人困惑且难以理解, 这不仅使读取死锁方案难以理解, 而且还使内部错误难以调试.
|
||||
|
||||
2. 一旦报告了一个问题, 所有锁定功能都将关闭. 尽管这是合理的, 因为一旦检测到锁定问题, 整个系统就会受到锁定错误的影响, 并且在修复错误之前继续运行
|
||||
系统是毫无意义的. 然而, 当开发人员遇到其他子系统中发生的一些锁定问题时, 这让他们感到沮丧, 在修复现有问题之前, 他们无法测试代码是否存在锁定问题.
|
||||
|
||||
3. 检测需要一些时间来运行, 并且会创建比生产环境更多的同步点. lockdep 使用内部锁来保护锁定问题检测的数据结构, 这并不奇怪. 但是, 此锁定会
|
||||
创建同步点, 并可能使某些问题难以检测(因为问题可能仅针对特定的偶数序列发生, 并且额外的同步点可能会阻止此类序列的发生)
|
||||
|
||||
针对此问题冯博群 Boqun Feng (Microsoft) 在 LPC-2022 上演示了 [Modularization for Lockdep](https://lpc.events/event/16/contributions/1210). 它提出将 LOCKDEP 进行模块化设计, 解耦为前端 - 后端的模式: 前端跟踪每个任务/上下文的当前持有的锁, 并向后端报告锁定对象, 后端维护锁依赖关系图并根据前端报告的内容检测锁定问题.
|
||||
|
||||
此外:
|
||||
|
||||
1. 对于与实际锁无关的等待和事件, 比如时间等待等机制, 如果无法完成, 最终也会导致死锁. 但是 Lockdep 只能通过分析锁的获取顺序来完成思索检测, 对于与实际锁无关的等待和事件, 无法识别和处理, 只能通过过模拟锁来完成.
|
||||
|
||||
2. 更糟糕的是, Lockdep 存在太多假阳性检测, 这可能阻止了本身更有价值的进一步检测.
|
||||
|
||||
3. 此外, 通过跟踪获取顺序, 它不能正确地处理读锁和交叉事件, 例如 wait_for_completion ()/complete () 用于死锁检测. Lockdep 不再是实现这一目的的好工具.
|
||||
3. 此外, 通过跟踪获取顺序, 它不能正确地处理读锁和交叉事件, 例如 wait_for_completion()/complete() 用于死锁检测. Lockdep 不再是实现这一目的的好工具.
|
||||
|
||||
|
||||
## 10.2 Crossrelease Feature
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -125,12 +125,27 @@
|
||||
| [USENIX](https://www.usenix.org/conferences/all) | NA |
|
||||
|
||||
|
||||
## 6.1 LPC
|
||||
## 6.1 Linux Plumbers Conference (LPC)
|
||||
-------
|
||||
|
||||
| 日期 | 录屏 |
|
||||
|:---:|:----:|
|
||||
| 2021/09 | [Watch Live (Free)](https://www.linuxplumbersconf.org/event/11/page/107-watch-live-free) |
|
||||
| 日期 | 会议 | 回放 |
|
||||
|:---:|:----:|:----:|
|
||||
| 2008 | [LPC-2008](https://blog.linuxplumbersconf.org/2008) | NA |
|
||||
| 2009 | [LPC-2009](https://blog.linuxplumbersconf.org/2009/schedule/index.html) | NA |
|
||||
| 2010 | [LPC-2010](http://wiki.linuxplumbersconf.org/2010:topics) | NA |
|
||||
| 2011 | [LPC-2011](http://wiki.linuxplumbersconf.org/2011:topics) | NA |
|
||||
| 2012 | [LPC-2012](http://wiki.linuxplumbersconf.org/2012:topics) | NA |
|
||||
| 2013 | [LPC-2013](http://wiki.linuxplumbersconf.org/2013:topics) | NA |
|
||||
| 2014 | [LPC-2014](http://wiki.linuxplumbersconf.org/2014:topics) | NA |
|
||||
| 2015 | [LPC-2015](http://blog.linuxplumbersconf.org/2015/ocw/events/LPC2015/proposals.html) | [LPC-2015](http://wiki.linuxplumbersconf.org/2015:topics) |
|
||||
| 2016 | [LPC-2016](http://blog.linuxplumbersconf.org/2016/ocw/events/LPC2016/proposals.html) | [topics](http://wiki.linuxplumbersconf.org/2016:topics) |
|
||||
| 2017/09 | [LPC-2017](http://blog.linuxplumbersconf.org/2017/ocw/events/LPC2017/proposals.html) | NA |
|
||||
| 2018/11 | [LPC-2018](https://lpc.events/2018) | [YouTube channel](http://blog.linuxplumbersconf.org/2018) |
|
||||
| 2019/09 | [LPC-2019](https://lpc.events/event/4) | [List of all talks/topics](https://lpc.events/event/4/contributions) |
|
||||
| 2020/09 | [LPC-2020](https://lpc.events/event/7) | [Watch Live (Free)](https://lpc.events/event/7/page/100-watch-live-free) |
|
||||
| 2021/09 | [LPC-2021](https://lpc.events/event/11) | [Watch Live (Free)](https://lpc.events/event/11/page/107-watch-live-free) |
|
||||
| 2022/09 | [LPC-2022](https://lpc.events/event/16) | [Watch Live (Free)](https://lpc.events/event/16/page/173-watch-live-free) |
|
||||
|
||||
|
||||
## 6.2 ASPLOS
|
||||
-------
|
||||
|
||||
@@ -3840,12 +3840,12 @@ Oracle 数据库具有类似的虚拟化功能, 称为 Oracle Multitenant, 其
|
||||
### 5.6.1 [EuroSys '22, OS scheduling with nest](https://dl.acm.org/doi/10.1145/3492321.3519585)
|
||||
-------
|
||||
|
||||
论文参照 [EuroSys '22, OS scheduling with nest](https://dl.acm.org/doi/10.1145/3492321.3519585), 并在 LPC-2022 上做了主题演讲 [OS Scheduling with Nest: Keeping Tasks Close Together on Warm Cores](https://lpc.events/event/16/contributions/1198)
|
||||
|
||||
为了最好地支持高度并行的应用程序, 使系统的吞吐量最高, CFS 调度器总是倾向于在任务创建和唤醒时将任务尽可能均衡的分散到系统的各个 CPU 上. 然而, 这可能总是事与愿违的. 据观察, 在服务器环境中, 这种策略会导致任务不必要地放置在运行频率较低的长时间空闲的核心上, 而这些 IDLE 的 CPU 往往需要较长的时间才能唤醒, 从而降低了业务的性能, 而导致任务不必要地分布在各个 SCOKET 上, 也导致这些 SOCKET 不能进入低功耗模式, 从而导致功耗增加. 论文 [EuroSys '22, OS scheduling with nest: keeping tasks close together on warm cores, Julia Lawall](https://hal.inria.fr/hal-03612592/document?msclkid=ef0482efd02911ecac42ed2b3d62baa7) 中, 在 Linux 内核中实现了 Nest 调度器, 提出利用 CPU 核复用的原理, 通过构造一个多级 CPU 的集合, 使用这些集合的 priority 进行任务调度, 从而获得更高的频率和使用更少的 SOCKET. 对于高度并行的应用程序, 其性能和能耗与 CFS 不相上下, 但对于使用比核心更少任务的应用程序, Nest 调度器的的性能为原生 10% ~ 2 倍, 并且可以降低能耗.
|
||||
|
||||
|
||||
为进程维护了一个多级(从 WARM 到 COLD)的 CPU 集合, 用来在选核时作为参考, 类似于多级 CPU Cache 一样.
|
||||
|
||||
|
||||
| CPU 集合 | 描述 |
|
||||
|:--------:|:---:|
|
||||
| primary nest | 主要包括那些最近使用过或者正在使用, 或者预计很快就会用到的一些 CPU. 比如进程当前正在运行的 CPU 以及最近运行过的 CPU, 都属于此集合 |
|
||||
@@ -4354,6 +4354,10 @@ LPC-2022 [Dynamic Energy Model to handle leakage power](https://lpc.events/event
|
||||
|
||||
3. 允许在运行时根据 SoC 的当前温度修改功率值, 因为与小核和中核相比, 大核的能效对温度更敏感.
|
||||
|
||||
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|
||||
|:---:|:----:|:---:|:----:|:---------:|:----:|
|
||||
| 2021/08/11 | Viresh Kumar <viresh.kumar@linaro.org> | [cpufreq: Auto-register with energy model](https://lore.kernel.org/all/cover.1628682874.git.viresh.kumar@linaro.org) | TODO | v2 ☐☑✓ | [LORE v1,0/8](https://lore.kernel.org/all/cover.1628579170.git.viresh.kumar@linaro.org)<br>*-*-*-*-*-*-*-* <br>[LORE v2,0/9](https://lore.kernel.org/all/cover.1628682874.git.viresh.kumar@linaro.org) |
|
||||
|
||||
|
||||
### 7.2.6 IPA(Thermal 管控)
|
||||
-------
|
||||
@@ -5590,7 +5594,7 @@ ARM & Linaro 的内核团队针对 Android/linux 等做了大量的调度的优
|
||||
| 2021/01/06 | Vincent Guittot | [sched: Remove per rq load array](https://lore.kernel.org/patchwork/cover/1079333) | 自 LB_BIAS 被禁用之后, 调度器只使用 rq->cpu_load[0] 作为cpu负载值, 因此 cpu_load 这个数组的其他之其实没意义了, 直接去掉了. 注意这对 load_balance 的调优是有一定影响的, 之前 sched_domain 中可以通过 sysctl 接口修改比较负载使用的 index, 这些 index 对应的 cpu_load 数组的下标. 干掉了这个数组, 那么这些 sysctl 也就没必要了 | v2 ☑ 5.10-rc1 | [PatchWork](https://lore.kernel.org/patchwork/cover/1079333) |
|
||||
| 2021/04/12 | Peter Zijlstra | [sched: Clean up SCHED_DEBUG](https://lore.kernel.org/patchwork/cover/1402660) | 目前内核有 sysctl, procfs 和 debugfs SCHED_DEBUG 接口, 比较混乱.<br>1. 将 CONFIG_LATENCYTOP 以及 sched_schedstats 和 NUMA balance 的 sysctl 开关都不再依赖于 CONFIG_SCHED_DEBUG<br>2. 将 [所有接口信息都转移到 debugfs 中](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d27e9ae2f244805bbdc730d85fba28685d2471e5).<br>3. 添加 ALT_PERIOD 和 BASE_SLICE feature. 考虑 cgroup 的情况, 添加了 ALT_PERIOD 计算__sched_period 实际实际的 h_nr_running, 添加 BASE_SLICE 保证进程的 sched_slice 至少达到 sysctl_sched_min_granularity]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0c2de3f054a59f15e01804b75a04355c48de628c) | v2 ☑ 5.13-rc1 | [PatchWork](https://lore.kernel.org/patchwork/cover/1402660), [LKML](https://lkml.org/lkml/2021/3/26/395), [LORE](https://lore.kernel.org/all/20210412101421.609526370@infradead.org) |
|
||||
|
||||
## 12.4 benchmark
|
||||
## 12.4 tools & benchmark
|
||||
-------
|
||||
|
||||
[A survey of scheduler benchmarks](https://lwn.net/Articles/725238)
|
||||
@@ -5639,6 +5643,27 @@ ECRTS 2020(32nd Euromicro Conference on Real-Time Systems) 上 Daniel 等人发
|
||||
|
||||
[Nefelim4ag/Ananicy](https://github.com/Nefelim4ag/Ananicy) 用于管理进程的 IO 和 CPU 优先级, 它主要用于桌面使用. 它的 github 允许开发人员贡献主流应用程序规则集.
|
||||
|
||||
|
||||
### 12.4.3 调度行为模拟
|
||||
-------
|
||||
|
||||
| 日期 | LWN | 翻译 |
|
||||
|:---:|:----:|:---:|
|
||||
| 2019/07/10 | [Scheduler behavioral testing](https://lwn.net/Articles/793381) | [LWN: OSPM会议讨论如何测试scheduler行为](https://blog.csdn.net/Linux_Everything/article/details/97207472) |
|
||||
|
||||
| 工具 | 描述 | 主页 |
|
||||
|:---:|:---:|:----:|
|
||||
| rt_app | rt-app 模拟典型的系统用例, 并跟踪其运行时的信息. | [GitHub](https://github.com/scheduler-tools/rt-app) | NA |
|
||||
| Yogini | [LPC-2022/Exercising the Linux scheduler with Yogini](https://lpc.events/event/16/contributions/1203) | NA |
|
||||
|
||||
| 工具 | 描述 |
|
||||
|:---:|:----:|
|
||||
| [LISA](https://github.com/arm-software/lisa) | Linux Integrated Systems Analysis |
|
||||
| [TRAPpy](https://github.com/arm-software/trappy) | Trace Analysis and Plotting in Python |
|
||||
| [BART](https://github.com/arm-software/bart) | Behavioural Analysis and Regression Toolkit |
|
||||
|
||||
|
||||
|
||||
**引用: **
|
||||
|
||||
<div id="ref-anchor-1"></div>
|
||||
|
||||
@@ -201,10 +201,13 @@ Arch Linux 在 2022 年 5 月份开始了也提供了他们的 [debuginfod 调
|
||||
|
||||
|
||||
|
||||
# 4 运维工具
|
||||
-------
|
||||
|
||||
|
||||
|
||||
|
||||
| 工具 | 主页 | 描述 |
|
||||
|:---:|:---:|:----:|
|
||||
| [kmon](https://github.com/orhun/kmon) | | NA | 用于管理 Linux 内核模块和监视内核活动的终端工具, 使用 Rust 编写. |
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user