有兴趣的朋友可以评论分享针对某个特性功能的资料链接,谢谢。
资料来源: https://kernelnewbies.org/LinuxChanges
6.12 kernel
调度
别是为实时应用提供了更强的支持。在众多改进中,"PREEMPT_RT"(实时Linux补丁)的主线支持无疑是最引人瞩目的亮点。
Linux Kernel 6.12 进一步扩展了内核对进程的抢占能力,允许内核代码中的关键段被实时任务中断,从而在实时应用中大幅提升性能。这一变革使得Linux在处理时间敏感的任务时表现更加出色,例如工业控制、机器人技术及高频交易系统等领域,这些应用通常要求系统能快速响应外部事件。
Linux 6.12 内核引入了革命性的sched_ext
功能,这是一个基于 BPF 技术的可编程调度器框架。根据官方文档的描述,它允许通过一组 BPF 程序自定义调度器的行为。
6.6 kernel
EEVDF(新调度器)
Linux_6.6 - Linux Kernel Newbies
The task scheduler is the part of the kernel that decides which task should be run next when there are many to pick, its role is critical to achieve good performance and latency. The previous algorithm, called CFS, was merged in Linux 2.6.23. In this release, it is replaced by code that uses a new algorithm, called EEVDF ("Earliest Eligible Virtual Deadline First").
This algorithm is designed to ensure that processes that are not getting the attention they should are automatically picked the next time, while processes that got more than they deserved are "punished". This is done in a clean, algorithmic way, where as CFS used heuristics and tunable knobs to attempt to guess which processes needed more attention. Many of these tunables have been removed. For these reasons, this new scheduler should improve the latency of tasks that would be left behind by CFS while leting other tasks be routinely over-scheduled. For more details, read the LWN article.
Recommended LWN article: An EEVDF CPU scheduler for Linux
Recommended paper: Earliest Eligible Virtual Deadline First : A Flexible and Accurate Mechanism for Proportional Share Resource Allocation
5.17 kernel
large folios
Linux_5.17 - Linux Kernel Newbies
Support using (but not creating) large folios
5.16 kernel
内存管理
Linux_5.16 - Linux Kernel Newbies
1.3. Memory folios infrastructure for a faster memory management
To manage the system's memory, the available RAM is split into small units, called pages. The size of these pages vary depending on the architecture, but on x86 systems it's KB. In modern systems with several tens of GB, such small page size equals to a vast amount of pages, which are difficult to manage. To solve this problem, the Linux kernel developed the concept of compound pages, which are page structures that can contain more than one physical page. But the way these compound pages work is not clear, and it has bug-prone APIs that also introduce some overhead all across the kernel.
This release introduces the concept of page folios, which are like compound pages, but with better semantics. Using page folios in some core parts of the kernel brings some performance improvements in common workloads. This release will include the core infrastructure of page folios and converts some parts of the core memory management subsystem and the page cache. Future releases will convert some file systems and introduce multi-page folios.
Recommended LWN articles: Clarifying memory management with page folios, and The folio pull-request pushback
5.12 kernel
1.4. Support for the ACRN hypervisor
This release adds support for the ACRN hypervisor. ACRN is a Type 1 reference hypervisor stack, running directly on the bare-metal hardware, and is suitable for a variety of IoT and embedded device solutions. It implements a hybrid VMM architecture, using a privileged Service VM. The Service VM manages the system resources (CPU, memory, etc.) and I/O devices of User VMs. Multiple User VMs are supported, with each of them running Linux, Android OS or Windows. Both Service VM and User VMs are guest VM.
Documentation: ACRN documentation
1.7. Non-blocking path lookup while opening a file
This release supports path name lookups that will not block under any circumstance. This means that the kernel will try to resolve the path with the cached data, but if it needs to do I/O, it will return an error. This is needed for io_uring(), but support in openat2() with the RESOLVE_CACHED flag has been added, too.
Recommended LWN article: Avoiding blocking file-name lookups
1.9. Dynamic Thermal Power Management
The density of components greatly increased the last decade bringing a numerous number of heating sources which are monitored by more than 20 sensors on recent SoC. The skin temperature, which is the case temperature of the device, must stay below approximately 45°C in order to comply with the legal requirements.
The skin temperature is managed as a whole by an user space daemon, which is catching the current application profile, to allocate a power budget to the different components where the resulting heating effect will comply with the skin temperature constraint. This technique is called the Dynamic Thermal Power Management.
This series provides a Dynamic Thermal Power Management framework to provide an unified way to act on the power of the devices.
Documentation: Dynamic Thermal Power Management framework
-
cpufreq_cooling: Get effective CPU utilization from scheduler: makes the cpufreq_cooling driver reuse the CPU utilization metric provided by the scheduler instead of depending on idle and busy times of a CPU, which aren't that accurate to measure the busyness of a CPU for the next cycle commit, commit, commit
virtio-input: add multi-touch support commit
- io_uring
-
Request recycling and task_work optimizations, which net anywhere from 10-20% of speedups on workloads that mostly are inline commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
-
Enable non-blocking path resolution for filename lookups commit
-
Support for skip entries in file registration commit
-
Flag new native workers with IORING_FEAT_NATIVE_WORKERS commit
-
Converts the io-wq workers to be forked off the tasks in question instead of being kernel threads that assume various bits of the original task identity merge
-
- Locking
- Task scheduler
1.6. CPU Capacity awareness for the deadline scheduling class
Since Linux 3.14 the Linux task scheduler supports a deadline scheduling class, designed around real-time concepts for applications that need strict time requirements. This scheduling class was not aware of the existence of heterogeneous platforms where CPUs have not the same performance (ie. ARM big.LITTLE), which leads to wrong scheduling decisions. This release makes the deadline class aware of the capacity of each CPU.
Recommended LWn article: Capacity awareness for the deadline scheduler
Capacity awareness for the deadline scheduler [LWN.net]
阿里提交的 cpu burst功能
sched/fair: Introduce the burstable CFS controller
https://lkml.org/lkml/2021/6/21/227
kernel/git/torvalds/linux.git - Linux kernel source tree
字节跳动针对内存方面的提交
https://lkml.org/lkml/2021/8/14/27
6行代码,性能提升40%
With A Few Lines Of Code, AMD's Nice Performance Optimization For Linux 5.20 - Phoronix
With A Few Lines Of Code, AMD's Nice Performance Optimization For Linux 5.20 - Phoronix Forums