mirror of
https://github.com/gatieme/LDD-LinuxDeviceDrivers.git
synced 2026-08-18 00:58:21 +08:00
Merge branch 'master' of github.com:gatieme/LDD-LinuxDeviceDrivers
This commit is contained in:
@@ -24,8 +24,8 @@
|
||||
|:-----:|:----------:|:-------:|
|
||||
| 华为| [openeuler](https://gitee.com/openeuler/kernel) | [openeuler](https://openeuler.org/zh) |
|
||||
| 阿里巴巴 | [alikernel](https://github.com/alibaba/alikernel) | [阿里云智能基础软件部-技术博客](https://kernel.taobao.org), [Alibaba Cloud Linux 2 DOC](https://help.aliyun.com/document_detail/154950.html?spm=a2c4g.11186623.3.3.37157594hOc6qA) |
|
||||
| 腾讯 | [TencentOS-kernel](https://github.com/Tencent/TencentOS-kernel) | [腾讯开源 | Tencent Open Source](https://opensource.tencent.com/projects) |
|
||||
| AMAZON | [AmazonLinux](https://github.com/amazonlinux/linux) |
|
||||
| 腾讯 | [TencentOS-kernel](https://github.com/Tencent/TencentOS-kernel) | [腾讯开源 |
|
||||
| AMAZON | [AmazonLinux](https://github.com/amazonlinux/linux) ||
|
||||
| ORACLE | [linux-uek](https://github.com/oracle/linux-uek) | [linux-kernel-development](https://blogs.oracle.com/linux/linux-kernel-development), [2](https://blogs.oracle.com/linux/category/lnx-linux-kernel-development) |
|
||||
| openSuse | [openSUSE/kernel](https://github.com/openSUSE/kernel)<br>*-*-*-*-*-*-*-* <br>[openSUSE/kernel](https://github.com/openSUSE/kernel-source) | [opensuse.org](https://en.opensuse.org/openSUSE:Kernel_git) |
|
||||
| microsoft | [微软的 linux 内部版本 CBL-Mariner](https://github.com/microsoft/CBL-Mariner-Linux-Kernel)<br>*-*-*-*-*-*-*-* <br>[WSL2-Linux-Kernel](https://github.com/microsoft/WSL2-Linux-Kernel)<br>*-*-*-*-*-*-*-* <br>[azure-linux-kernel](https://github.com/microsoft/azure-linux-kernel) | NA |
|
||||
@@ -85,6 +85,17 @@
|
||||
|
||||
其中 SOSP 与 OSDI 是系统领域的圣殿, 无数研究者的梦想.
|
||||
|
||||
|
||||
| 会议 | 描述 |
|
||||
|:---:|:----:|
|
||||
| [LPC](https://www.linuxplumbersconf.org) | 一年一度的 Linux Plumbers Conference(LPC) 是从事 Linux 系统底层(就像房屋的管道 plumbing 类似)细节工作的开发人员中小一部分人的聚会. 它的主题涵盖了从内核之下一直到用户空间的组件, 这些组件是大多数 Linux 用户交互界面和应用程序的基础. |
|
||||
| [LSFMM](https://events.linuxfoundation.org/lsfmm) | [Linux Storage, Filesystem, Memory-management and BPF Summit(LSFMM)](https://events.linuxfoundation.org/lsfmm) |
|
||||
| [ASPLOS](https://asplos-conference.org) | International Conference on Architectural Support for Programming Languages and Operating Systems Explanation<br>国际编程语言和操作系统架构支持会议 |
|
||||
| [SOSP](https://sosp.org) | ACM 操作系统原理大会(SOSP: ACM Symposium on Operating Systems Principles) |
|
||||
| [OSDI](https://www.usenix.org/conferences/all) | OSDI 的全称是 USENIX Symposium on Operating Systems Design and Implementation, 但随着时代的发展, 它早已不局限在操作系统领域. |
|
||||
| [USENIX](https://www.usenix.org/conferences/all) | NA |
|
||||
|
||||
|
||||
## 5.1 LPC
|
||||
-------
|
||||
|
||||
@@ -95,9 +106,6 @@
|
||||
## 5.2 ASPLOS
|
||||
-------
|
||||
|
||||
International Conference on Architectural Support for Programming Languages and Operating Systems Explanation
|
||||
国际编程语言和操作系统架构支持会议
|
||||
|
||||
|
||||
| 日期 | 链接 |
|
||||
|:---:|:----:|
|
||||
@@ -118,13 +126,10 @@ OSDI 的全称是 USENIX Symposium on Operating Systems Design and Implementatio
|
||||
|:---:|:----:|:----:|
|
||||
| 2021/04/12 ~ 2021/04/23 | [ASPLOS 2021](https://asplos-conference.org/2021/index.html) | [OSDI2021 论文选读](https://zhuanlan.zhihu.com/p/393380577) |
|
||||
|
||||
[ALL CONFERENCES](https://www.usenix.org/conferences/all)
|
||||
|
||||
## 5.5 LSFMM
|
||||
-------
|
||||
|
||||
[Linux Storage, Filesystem, Memory-management and BPF Summit(LSFMM)](https://events.linuxfoundation.org/lsfmm)
|
||||
|
||||
| 日期 | 链接 |
|
||||
|:---:|:----:|
|
||||
| 2022/05/02 ~ 2022/05/04 | [LSFMM-2022](https://lwn.net/Articles/893733) |
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
-------
|
||||
|
||||
|
||||
# 0.1 调度子系统概述
|
||||
## 0.1 调度子系统概述
|
||||
-------
|
||||
|
||||
|
||||
@@ -608,12 +608,21 @@ coscheduling 协同调度是为了解决云服务场景, 为不同用户提供
|
||||
### 2.1.2 autogroup
|
||||
-------
|
||||
|
||||
CFS 用户反复在社区抱怨并行 kbuild 对桌面交互性有负面影响, 因此 Linus 提出了一个想法 autogroup, 即自动创建任务组.
|
||||
[Group scheduling and alternatives](https://lwn.net/Articles/418884)
|
||||
CFS 用户反复在社区抱怨并行 kbuild 对桌面交互性有负面影响
|
||||
|
||||
完全公平的调度程序背后的核心思想是它的完全公平性: 如果有N个进程争夺CPU, 每个进程具有相等的优先级, 那么每个进程将获得可用CPU时间的 1/N. 此策略取代了 O(1) 调度程序中发现的相当复杂的"交互性"启发式方法; 在大多数情况下, 它可以产生更好的桌面响应. 但是, 这种方法在某些地方会失败. 如果用户使用 make -j10 运行十个编译器实例以及一个视频播放应用程序, 则每个进程将获得"公平"的 9% 的 CPU. 这 9% 可能不足以提供用户所希望的视频体验. 因此, 许多用户对"公平"的看法不同也就不足为奇了. 如果编译工作作为一个整体得到50%, 而视频应用程序得到另一半, 那不是很好吗?
|
||||
|
||||
借助组调度可能很好的解决问题, 这正是 Mike Galbraith 的 每 TTY 任务分组特性 [sched: automated per session task groups](https://lore.kernel.org/all/1290281700.28711.9.camel@maggy.simson.net) 想要完成的, 参见 [TTY-based group scheduling](https://lwn.net/Articles/415740). 其基本思想是, 会自动创建一个附加到系统中的每个 TTY 的任务组. 所有具有给定 TTY 作为其控制终端的进程都将放置在适当的分组中; 然后, 组调度代码可以在由其控制终端确定的进程组之间共享时间. 编译作业通常通过在终端仿真器窗口中键入 make 来启动. 该作业将具有与视频播放器不同的控制 TTY, 后者可能根本没有控制终端. 因此, 最终结果是, 每个 TTY 分组自动将终端中运行的任务与通过窗口系统运行的任务分开.
|
||||
|
||||
但是社区不少人对此特性持反对态度, 一些开发者认为这种做法明明不需要内核补丁, 只需要[用户态配置](https://lore.kernel.org/all/20101116181603.GC19327@tango.0pointer.de)就可以达到同样地效果. 通过与 systemd 结合自动为登录的用户配置会话 session, 就可以解决问题. 另外一些开发者则对基于 TTY 的分组方式不太满意, 认为基于会话(session)的方式可能更合适一些. 参见 [Group scheduling and alternatives](https://lwn.net/Articles/418884).
|
||||
|
||||
最终基于 session 的自动创建任务组方案 autogroup(CONFIG_SCHED_AUTOGROUP) 于 v2.6.38 合入主线, 并得到 Linus 的好评.
|
||||
|
||||
| 时间 | 作者 | 特性 | 描述 | 是否合入主线 | 链接 |
|
||||
|:----:|:----:|:---:|:----:|:---------:|:----:|
|
||||
| 2010/12/05 | Con Kolivas <kernel@kolivas.org> | [sched: automated per session task groups](https://lwn.net/Articles/239619) | 实现 CFS 组调度. | v4 ☑ [2.6.38-rc1](https://kernelnewbies.org/2.6.38-rc1#Automatic_process_grouping_.28a.k.a._.22the_patch_that_does_wonders.22.29) | [LWN](https://lwn.net/Articles/239619), [COMMIT](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5091faa449ee0b7d73bc296a93bca9540fc51d0a) |
|
||||
| 2010/11/20 | Mike Galbraith <efault@gmx.de> | [sched: automated per tty task groups](https://lore.kernel.org/all/1287479765.9920.9.camel@marge.simson.net) | 参见 [TTY-based group scheduling](https://lwn.net/Articles/415740) | v4 ☐☑✓ | [LORE](https://lore.kernel.org/all/1290281700.28711.9.camel@maggy.simson.net) |
|
||||
| 2010/12/05 | Mike Galbraith <efault@gmx.de> | [sched: automated per session task groups](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5091faa449ee0b7d73bc296a93bca9540fc51d0a) | 实现 CFS 组调度. | v4 ☑ [2.6.38-rc1](https://kernelnewbies.org/2.6.38-rc1#Automatic_process_grouping_.28a.k.a._.22the_patch_that_does_wonders.22.29) | [LWN](https://lwn.net/Articles/239619), [COMMIT](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5091faa449ee0b7d73bc296a93bca9540fc51d0a) |
|
||||
| 2011/01/10 | Bharata B Rao <bharata@linux.vnet.ibm.com> | [sched: Get group names back in /proc/sched_debug](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?id=8ecedd7a06d27a31dbb36fab88e2ba6e6edd43ca) | 在 `/proc/sched_debug` 路径下显示 group name. | v1 ☑✓ | [LORE v1,0/2](https://lore.kernel.org/all/20110110051445.GB2772@in.ibm.com) |
|
||||
|
||||
|
||||
### 2.1.3 CFS BANDWIDTH 带宽控制
|
||||
@@ -4612,18 +4621,17 @@ Tosatti 的 patch set 增加了一组新的 prctl() 命令来解决这个问题.
|
||||
|
||||
|
||||
|
||||
## 8.5 更精确的调度时钟(HRTICK), 2.6.25(2008年4月发布)**
|
||||
## 8.5 更精确的调度时钟(HRTICK)
|
||||
-------
|
||||
|
||||
2.6.25(2008年4月发布)
|
||||
|
||||
CPU的周期性调度, 和基于时间片的调度, 是要基于时钟中断来触发的.一个典型的 1000 HZ 机器, 每秒钟产生 1000 次时间中断, 每次中断到来后, 调度器会看看是否需要调度.
|
||||
|
||||
|
||||
|
||||
然而, 对于调度时间粒度为微秒(10^-6)级别的精度来说, 这每秒 1000 次的粒度就显得太粗糙了.
|
||||
|
||||
|
||||
|
||||
2.6.25 引入了所谓的**高清嘀哒(High Resolution Tick)**, 以提供更精确的调度时钟中断.这个功能是基于**高精度时钟(High Resolution Timer)框架**, 这个框架让内核支持可以提供纳秒级别的精度的硬件时钟(将会在时钟子系统里讲).
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user