LWN:6.1 合并窗口第二部分!

Linux内存管理专题 - 第14章:内存回收与LRU机制 基本概念当系统内存不足时触发回收机制主要回收目标:用户进程页、内核缓存、slab对象两种回收方式:直接回收(同步)后台回收(kswapd守护进程异步进行)回收策略// 内核典型回收路径。 阅读详情

关注了就能看到更多这么棒的文章哦~

The rest of the 6.1 merge window

By Jonathan Corbet
October 17, 2022
DeepL assisted translation
https://lwn.net/Articles/910608/

Linus Torvalds 于 10 月 16 日发布了 6.1-rc1,并关闭了 6.1 合并窗口;此时,有 11537 个 non-merge changeset 已经被合入 mainline 仓库。这比 6.0 合并窗口期间的 13543 个 changeset 要少得多,但数量并不是一个全面的指标,在这个版本中有了相当多的重大改动。其中有不少属于是在我们第一次 6.1 合并窗口的总结之后合入的近 5,800 个 changeset;请继续阅读来了解这次合并窗口的后半部分中完成的一些工作。

Architecture-specific

  • Loongarch 架构中支持了 perf event、kexec、kdump 和 BPF 即时编译(just-in-time)的支持。

  • EFI 系统上的内核现在可以用跟体系架构无关的方式来对自己解压和启动。

Core kernel

  • 新增了一个 io_uring mode(要使用的话,只要在设置 ring 的时候使用 IORING_SETUP_DEFER_TASKRUN 标志即可),这会使得 ring 相关工作的执行被推迟,直到应用程序希望它完成的时候。这样延期一下可以有助于让这些工作批量进行,并防止在合适的时间点产生应用程序抢占而引起的延迟问题。在相关 commit 中有一些介绍。

  • process-ID cgroup controller 现在可以记住所使用的 PID 最大数量,这可以用来帮助决定相应的限制;这个数值在一个名为 peak 的虚拟文件中提供了出来(be exported)。

  • 用户空间进程现在可以请求将一系列 page "collapsed(折叠)" 成 transparent huge pages。当然,这会导致这些 huge page 不那么透明了,但它也可以允许用户空间来控制是否要做,以及什么时候来做这个动作。

  • 合并了/dev/userfaultfd patch,这就给系统管理员提供了一种方法,可以用文件系统的访问权限来授权访问 userfaultfd() 功能。

  • memory-tiering,就是对具有不同性能特征的多种内存进行管理;通常情况下,人们希望最常用的 page 能驻留在速度最快的内存中,而不太经常使用(但仍然有用)的 page 可以放在较慢的 RAM 中。在 LWN 文章中介绍过的两个内存分层 patch set 已经合并到 6.1 中。"hot page selection" 机制改进了在较慢的 RAM 中的 busy page 的检测,从而方便把它们提高到更快的内存里。同时,"demotion-order (降级顺序) " patch set 正式确定了内核对 memory tier 的定义以及它们的相对性能的概念,允许对这些 tier 更好地进行管理。

  • multi-generational LRU 代码已经合并了。这项工作用了一个 multi-stage structure 来取代了内核的 two-queue、least-recently-used 机制,据说它能更好地识别哪些内存 page 是在被实际使用。并且提供了一个 "kill switch",可以用来关闭掉新的机制,比如在某个特定的系统上由于它导致了问题的话。相关的 administrative guide 中有一些信息关于如何控制这个功能,而相应的 design documentation 则介绍了它的工作机制。

    关于 multi-generational LRU 以及 tiering 机制的相互:LRU 主要处理每个 zone(同一 node 上每一个由相同类型的物理连续内存组成的区域)内的内存管理,而 tiering 则是关于 zone 之间的 page 的移动。

  • maple tree 数据结构也被合并了。这个功能可以更有效地取代红黑树,希望它也能在未来帮助实现 range locking 功能。已经把一些非常核心的内存管理子系统都被转换成了 maple tree 方式;幸运的话,用户唯一能感受到的变化就是性能发生了提升。

  • 现在可以在 cgroup 级别来跟踪 pressure-stall 信息。启用这种跟踪机制可能会导致显著的性能损失;相关 commit 中有更多的信息。

Filesystems and block I/O

  • 对 Btrfs 进行了一些修改,提供了显著的性能提升,包括对 FIEMAP ioctl() 的速度给出了 "数量级的提升"。

  • Btrfs 现在支持使用 io_uring 的 buffered write。

  • Btrfs 的 "send" 操作已经支持了使用了 fs-verity 保护的文件。

  • 用户空间的文件系统 (FUSE) 子系统支持了使用 O_TMPFILE 创建临时文件。

Hardware support

  • Clock。联发科 MT6795 和 MT8365 时钟控制器、高通 MSM8909 和 SM6375 全局时钟控制器、高通 SM6115 和 SM8450 显示时钟控制器、高通 SC8280XP 图形时钟控制器、Rockchip RV1126 时钟控制器、展讯 UMS512 时钟和瑞萨 Versaclock 7 时钟控制器。

  • GPIO and pin control。赛普拉斯 Cy8C95x0 pinctrl/gpio I2C 扩展器,高通 SC8280XP 和 SM8450 LPASS LPI 引脚控制器,以及联发科 MT8188 引脚控制器。

  • Industrial I/O。Liteon LTRF216A 光传感器、Richtek RTQ6056 电流和功率监视器、MEMSensing 数字 3 轴加速度计、Maxim max11205 模数转换器和 Bosch Sensortec BNO05 IMU。

  • Input。IBM 操作面板,Richtek RT5120 PMIC 电源键,以及 Pine64 PinePhone 键盘。

  • Media。恩智浦 i.MX DW100 露光器和联发科的媒体数据路径接口。

  • Miscellaneous。Synopsys DWC AHCI SATA 控制器、Microchip LAN9662 OTP 控制器、Microchip PolarFire SoC 复位控制器、Aspeed HACE 加密引擎和 Exar 看门狗定时器。

  • Multi-function device。联发科 MT6370 电源管理 IC Richtek RT5120 电源管理 IC,以及 Rockchip RK817 PMIC 电池充电器。

  • USB。凌阳 SP7021 USB 2.0 PHYs 和联发科 MT6370 Type-C 控制器。

Miscellaneous

  • perf 工具跟平常一样,又得到了一长串的改进,其中包括对 AMD 处理器的支持的改善;相关的 merge message 中包含了摘要介绍。

Security-related

  • 早在 5.6 版本中,对 O_NONBLOCK 的支持就被(意外地)从/dev/random 中移除了。最终有人注意到并抱怨了出来,因此该支持将在 6.1 版本中被 revert 掉(估计还需要对稳定版 kernel 进行更新)。

Internal kernel changes

  • 在各种 slab 分配器代码中持续进行重构,从而增加它们之间可以公用的代码的数量。一个可能被注意到的行为上的改动是,SLAB 现在将直接从 page allocator 中获得大块的分配 buffer,而不需要自己维护一个单独的 cache 缓存了。

    这项工作的长期目标是最终能够移除 SLAB 和 SLOB 分配器,但这仍然是一个非常遥远的事情。

  • 出现了一个接口,可以展示由于 kmalloc()对分配大小进行四舍五入而导致了多少内存浪费;相关 commit 中描述了如何使用。

  • 内核构建系统(kernel build system)现在最少也需要 GNU Make 版本 3.82 了。

  • 如果内核子系统对某块 memory 既设置了可写属性又设置了可执行属性,那么现在 x86 架构代码会发出 warning。最初的计划是完全禁止这种 mapping 方式,但由于一些比较晚才发现的意外情况,所以这个计划被推迟了。

  • 内存管理功能仍在继续切换到 folio,这个版本中大多数改动都是集中在 swap 部分。

  • 在 LWN 文章中简要介绍过的 kernel memory sanitizer(KMSAN)已经被合并了。KMSAN 专注于检测内核中使用了未初始化的内存的地方;相关的 documentation patch 描述了如何使用。

  • checkpatch.pl 脚本现在会抱怨那些使用了已废弃的 kmap() 和 kmap_atomic() 函数的代码;现在代码应该使用 kmap_local_page() 来代替了。

  • 在内核代码如何获得随机数方面,已经有了相当多的混乱信息;在这个 merge message 中描述了应该如何最好地使用随机数相关的内部 API。

现在是时候等所有这些工作稳定下来,等待最终发布 6.1 版本了,该版本将成为今年的 long-term-support kernel。该版本可望在 12 月 4 日或 11 日发布;考虑到已经合并的一些改动的重要性,如果这个发布周期最终多耽误了一周,也不是什么太令人意外的事情。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

format,png

KernelMemorySanitizer,用于检测Linux内核中未初始化的内存的使用-C/C++开发 KMSAN(KernelMemorySanitizer)KMSAN是Linux内核未初始化内存使用的检测器。 目前正在开发中。 联系人:[受电子邮件保护]代码带有KMSAN补丁的内核分支可用KMSAN(KernelMemorySanitizer)KMSAN是Linux内核未初始化内存使用的检测器。 目前正在开发中。 联系人:[受电子邮件保护]代码带有KMSAN补丁的内核分支可在https://github.com/google/kmsan上获得。 如何构建为了使用KMSAN构建内核,您将需要一个新的Clang(8.0.0,主干341646或更高版本)export WORLD = pwd` Build Clang#从r341646开始,任何Clang版本都应该 立即下载

相关推荐

免费Profinet C语言源码

Profinet C语言源码

LWN:内核热点: folio,多代LRU,以及Rust!

关注了就能看到更多这么棒的文章哦~The kernel radar: folios, multi-generational LRU, and RustBy Jonathan CorbetJ...

Linux News搬运工 1822

深入MoveIt与OMPL集成开发:从源码编译到自定义规划算法实战

本文详细介绍了如何从源码编译集成MoveIt与OMPL,并实现自定义规划算法的完整流程。通过清理环境、获取源码、解决编译依赖与错误,最终指导开发者创建并集成名为MyRRT的自定义规划算法,从而实现对机器人运动规划栈的深度定制与优化。

h0i1j2k3l的博客 467

LWN:多代LRU方案的未来!

当一个 page 被访问时,它们会从较老的一代 list 移动到较新的一代,当需要回收内存时,会先从最古老的一代来开始回收 page。每一代的 page 都会随着时间的推移而变得老化,当最老的一代中的 page 都被回收掉了的时候,就会创造出新的一代。自这项工作的第一次发布以来最大的变动是在 "tier" (层)的定义上,tier 这个词现在被用来细分各代 page,这反过来又可以帮助更好地决定哪些 page 需要回收(reclaim),特别是在那些需要使用大量 buffered I/O 的系统中。

GetnextWindow的专栏 459

电流采样(分流器与霍尔传感器)

霍尔效应霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子迁移率等重要参数。简单原理如图1所示,半导体薄片两端通以控制电流I,垂直方向施加磁感应强度为B的匀强磁场,d为半导体材料的厚度,k为霍尔常数,它与半导体材质有关,则在垂直于电流和磁场的方向上,将产生电势差为UH的霍尔电压,它们之间的关系为。霍尔元件。

weixin_48867130的博客 1万+

更新3ds时和用读卡器读取传输文件操作不当导致的tf卡损坏无法读取需要格式化时出现的问题以及不想丢失文件并且修复的详细解决方法

前言: 不小心按了同意更新而且tf/sd卡损坏导致了3ds打开后都是出现 Anerror has occurred:(红色的) Failed to apply 1 FIRM patch(es). Press any button to shotdown 这样的画面,按了任意键后就关机,我找了很多资料和大佬的回答解决了这些问题,现在记录一下。 一.不小心按了更新导致上述的画面 原因:是因为系统升级了,但是里面的Luma3DS还没有更新,属于是更新了但没有完全更新的状态。 **修复方法** 1.首先请按

give_me_fish的博客 1万+

RocketMQ—高级使用场景原理

Producer生产消息的过程 Producer投送消息的过程简单来说,是首先找到这个Topic对应的所有Broker的Queue,并按照投放策略, 把消息投放到对应的broker上的Queue上。 Consumer消费消息的过程 同一个消费者组,里面的消费者,在进行消费的时候,比如消费的Topic一共有5个Queue,q1,q2,q3,q4,q5 这个消费者组里面有3个消费者c1,c2,c3,负载均衡下五个消费者会分轮训分配给这3个消费者, c1会监听消费q1,q4;c2监听消费q2,q5;.

不是很懂 2万+

windows10系统上安装最新版mysql 8.0详细步骤

windows10系统上安装最新版mysql 8.0详细步骤

glei20的博客 6715

LWN:6.17 合并窗口第一部分!

file_operations 结构 (structure) 中长期存在的 mmap() 方法正逐渐被弃用,转而支持 mmap_prepare(),后者减少了出现错误 (bugs) 和安全问题 (security problems) 的机会。新的 Rust 抽象 (abstractions) 已添加到稳压器子系统 (regulator subsystem)、固件属性 (firmware properties)、I/O 资源 (I/O resources) 和 I/O 内存 (I/O memory) 中。

Linux News搬运工 1932

DataCastle-租金预测

ID:编号;时间:房屋信息采集的时间;小区名:房屋所在小区,已脱敏处理;小区房屋出租数量:小区出租房屋数量,已脱敏处理;楼层:0、1、2分别表示楼层低,中,高;总层数:房屋所在建筑的总楼层数,已脱敏处理;房屋面积:房屋面积数值,已脱敏处理;房屋朝向:房屋的朝向;居住状态:房屋的居住状态,表示是否已出租或居住中,已脱敏处理;卧室数量:户型信息,数字表示卧室的个数;卫的数量:户型信息,数字表示卫生间的个数;厅的数量:户型信息,数字表示厅的个数;

优快云 精品推荐 3457

基于STM32的六足机器人控制系统设计(项目资料ID:27)

六足机器人控制系统综合分析其结构、步态与控制算法,融合云端服务、Wi-Fi、蓝牙、语音识别及手势识别等多种技术,设计了多元化控制模式,并针对不同应用场景提出了差异化的构建方案。系统硬件采用分层设计,分为主控板与舵机控制板:主控板以 STM32F103VET6 为核心,负责各类控制模式的数据处理与状态显示;舵机控制板采用 STM32F103R8T6,专注于舵机角度的精确控制,两板通过串口实现数据交互。

以培养嵌入式工程师为己任 1万+

LWN:6.11 合并窗口第一部分!

关注了就能看到更多这么棒的文章哦~The first half of the 6.11 merge windowBy Jonathan CorbetJuly 18, 2024Gemini-1.5-flash translationhttps://lwn.net/Articles/982034/6.11 内核发布的合并窗口于 7 月 14 日打开;截至撰写本文时,自那时起已有 4,072 个非合并变...

Linux News搬运工 2653

JS逆向-7881游戏平台Lb-Sign参数和Lb-Timestamp参数

本文是该专栏的第79篇,后面会持续分享python爬虫干货知识。本文以7881游戏平台为例,通过JS逆向获取它的lb-sign参数和lb-timestamp参数生成规律。针对lb-sign和lb-timestamp两个参数具体的“逆向”思路逻辑,笔者将在本文进行详细说明,并且将在正文结合“完整代码”来详细介绍。废话不多说,具体细节部分以及详细思路逻辑,跟着笔者直接往下看正文部分。(附带完整代码)

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 1220

LWN:6.11合并窗口的剩余部分!

关注了就能看到更多这么棒的文章哦~The rest of the 6.11 merge windowBy Jonathan CorbetJuly 29, 2024Gemini-1.5-flash translationhttps://lwn.net/Articles/982605/6.11-rc1版本的发布标志着 6.11 合并窗口于 7 月 28 日结束。当时有 12,102 个非合并变更集(...

Linux News搬运工 2366

【第07例】IPD体系进阶: 6 个技术评审点(TR)

TR技术评审点

产品线负责人 4412

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

LWN:6.3合并窗口的第二部分!

关注了就能看到更多这么棒的文章哦~The rest of the 6.3 merge windowBy Jonathan CorbetMarch 6, 2023DeepL assisted translationhttps://lwn.net/Articles/924384/Linus Torvalds 于 3 月 5 日发布了 6.3-rc1,按时关闭了 6.3 合并窗口。那时已经有 12717...

Linux News搬运工 897

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LWN:6.4合并窗口的第二部分!

关注了就能看到更多这么棒的文章哦~The rest of the 6.4 merge windowBy Jonathan CorbetMay 8, 2023DeepL assisted translationhttps://lwn.net/Articles/930481/Linus Torvalds 于 5 月 7 日发布了 6.4-rc1,并关闭了合并窗口。到那时,13,044 个非合并变更集已...

Linux News搬运工 1384

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LWN:6.16合并窗口的后半部分!

一系列内存管理(memory-management)变更包括更多的 folio 转换、用于核心内存管理操作(core memory-management operations)的Rust 抽象、对内存整理(memory compaction)的更好支持,以及移除。的改进,包括支持在 BPF 中计算系统调用统计信息(system call statistics)、更好地解密 Rust 符号、更精细的选项用于收集内存统计信息、一个用于故意引入锁争用(lock contention)的标志等等。

Linux News搬运工 1332

LWN:6.2合并窗口的第二部分!

关注了就能看到更多这么棒的文章哦~The rest of the 6.2 merge windowBy Jonathan CorbetDecember 27, 2022DeepL assisted translationhttps://lwn.net/Articles/918146/今年,世界收到了从 Linus Torvalds 来的一份特殊的圣诞礼物:6.2-rc1 kernel prepat...

Linux News搬运工 569

LWN: 6.1 合并窗口第一部分!

关注了就能看到更多这么棒的文章哦~The first half of the 6.1 merge windowBy Jonathan CorbetOctober 7, 2022DeepL assisted translationhttps://lwn.net/Articles/910312/6.1 合并窗口正在顺利进行中:自从窗口打开以来,已经有 5,752 个 non-merge changes...

Linux News搬运工 368

LWN:6.17 合并窗口的后半部分!

网络*:Qualcomm IPQ5018 内部 PHY、Airoha AN7583 MDIO 总线控制器、Broadcom 50/100/200/400/800 千兆以太网卡、Microchip Azurite DPLL/PTP/SyncE 设备以及 Realtek 8851BU 和 8852BU USB 无线网络 (Wi-Fi 6) 适配器。供电设备 (PSE) 实现增加了对可配置预算评估策略的支持,这些策略“被 PSE 控制器用于在功率预算超出等情况下决定首先关闭哪些端口”。详情请参阅 此合并消息。

Linux News搬运工 1800

LWN:6.7合并窗口的第一部分!

关注了就能看到更多这么棒的文章哦~The first half of the 6.7 merge windowBy Jonathan CorbetNovember 3, 2023ChatGPT translationhttps://lwn.net/Articles/949294/自 6.7 合并窗口打开以来,截至本文写作时已有 9,842 个非合并的变更集(non-merge changeset)...

Linux News搬运工 885

LWN:6.2合并窗口,第一部分!

关注了就能看到更多这么棒的文章哦~6.2 Merge window, part 1By Jonathan CorbetDecember 15, 2022DeepL assisted translationhttps://lwn.net/Articles/917733/曾几何时,Linus Torvalds 试图在合并窗口的早期能够平均每天向 mainline 合入大约 1000 个 changes...

Linux News搬运工 793

LWN:6.10合并窗口的后半部分!

关注了就能看到更多这么棒的文章哦~The rest of the 6.10 merge windowBy Jonathan CorbetMay 27, 2024Gemini-1.5-flash translationhttps://lwn.net/Articles/974869/Linus Torvalds发布了 6.10-rc1并在 5 月 26 日关闭了 6.10 合并窗口。当时,已经有 ...

Linux News搬运工 550

LWN:6.6合并窗口的前半部分!

关注了就能看到更多这么棒的文章哦~The first half of the 6.6 merge windowBy Jonathan CorbetAugust 31, 2023ChatGPT assisted translationhttps://lwn.net/Articles/942954/截至目前,已经有4588个non-merging changset合并到了6.6内核版本的mainlin...

Linux News搬运工 1020
上一篇: LWN:split-lock用户应该受到多重的惩罚?
下一篇: LWN:社区发行版关闭了硬件编解码器!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值