LWN:最近在关注的kernel改动!

基因家族Motif 分析 MEME 阅读详情

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

Kernel topics on the radar

By Jonathan Corbet
August 2, 2021
DeepL assisted translation
https://lwn.net/Articles/864603/

内核开发社区非常繁忙,每天都有成千上万的电子邮件飞来飞去,每个时刻都有许多不同的开发任务在进行中。这些工作中大部分最终都会引出 LWN 的相关文章,但我们没有办法涵盖所有的工作,甚至没有办法涵盖全部那些有趣的工作。下面是我们的第一次尝试,希望也可以成为后续我们定期的专题:快速过一下目前编者正在跟踪的那些工作,不过不确定它们后续会不会变成一篇完整文章的主题。第一组的主题包括 memory folios 、task isolation 、以及谷歌的 lightweight threading framework。

Memory folios

三月份的时候已经在 LWN 介绍过了 memory folios 。Matthew Wilcox 的这组 patch 增加了 "foio" 的概念,即其确保了不会成为一个 compound page 中的 tail page。也就是 folio page 可以保证要么是一个独立的(singleton)page ,要么是一个 compound page 的开头部分,它也创建了一个 API 来给内存管理功能新定义了一些有用的 structure,节省了一些内存空间,并且稍微提高一些场景下的性能表现。

虽然内存管理社区仍然没有完全接受这个概念(一些开发者认为这个改动很大但好处却很小),但看起来这组 patch 似乎越来越可能在不久的将来被合并进来。或者,至少会开始走 merge 流程。人们不会一下子合入所有 138 个 patch(这是最后一次统计的数字)的内存管理 patch set。在 7 月中旬的时候 Wilcox 提出了他的计划,也就是在 5.15 中合并前 89 个 patch ,而其余的 patch 将在接下来的两个开发周期内得到合入。目前似乎没有人对这个时间表提出异议。

不过在 7 月下旬,Wilcox 偶然发现了一篇他命中注定会读到的 Phoronix benchmarking 的文章,该文章显示在内核中应用了 folio 补丁后,PostgreSQL 的性能提高了 80%。他说这个结果是 "看起来很令人鼓舞(plausibly real)",并且提出是不是应该加速合并这些 folio 相关的 patch。但其他开发者的反应则是表示怀疑。PostgreSQL 的开发者 Andres Freund 研究了一下这个结果是如何出现的,并得出结论说这个测试 "归根结底并没有测量出什么特别有趣的结果"。他自己的测试得到了 7% 的提高,不过(正如他所指出的)这仍然是一个不错的改进了。

最终来看,支持 folio 的力量似乎越来越强,而 merge 过程很可能仍将在 5.15 的时候开始。

Retrying task isolation

去年,开发社区曾经讨论过 task-isolation mode,也就是允许那些对 latency 很敏感的应用程序在没有内核干扰的情况下得以在 CPU 上运行。这项工作最终没有被 merge,但人们显然仍然对这种模式很感兴趣,从 Marcelo Tosatti 的 patch set 就可以看出这一点。它采取了一种更简单的方法来解决这个问题,至少起初的时候是这样的。

这个 patch 着重关注的是,哪怕 CPU 在 "nohz" 模式下运行时不会有定期的 clock tick,也仍然会产生内核中断,因此会引出麻烦。具体而言,他正在研究 "vmstat" 代码,这部分代码是为内存管理子系统执行清理工作的。其中一些工作是在一个单独的线程中完成的(通过一个工作队列来运行),当 CPU 运行在 nohz 模式下时,该线程通常会被禁用。不过,有些情况会导致这个线程在 nohz CPU 上被重新 reschedule 得以运行,从而导致原来的应用程序无法再独占该处理器。

Tosatti 的 patch set 增加了一组新的 prctl() 命令来解决这个问题。PR_ISOL_SET 这个命令会设置 "isolation parameters",这个参数可以是 PR_ISOL_MODE_NONE 或 PR_ISOL_MODE_NORMAL。后者要求内核避免发生中断。但这些参数一直要等到 task 真正进入了 isolation 模式才会开始生效,这是通过 PR_ISOL_ENTER 命令来完成的。内核看到需要进入 isolation 模式的时候,就会立即执行之前推迟的所有 vmstat 工作,这样内核就不会在以后不方便清理的时候再做这个工作了。在 isolation mode 中,任何一次系统调用结束的时候都会触发这个 deferred-work 要完成的 cleanup 动作。因为这些系统调用很可能总会触发一些 delayed work,这样在应用程序代码运行时情况不会被弄得更加混乱。

这个改动的意图明显是希望使这类功能更加普遍适用,也就是保证任何一个 delayed work 都要得以立即执行。这导致其他人(包括 Nicolás Sáenz)的质疑,认为这种采用单一的 mode 来控制那些各种不同的内核操作是不对的。他说,将各种行为分割开来,后续就可以将一些决策动作转移到用户空间。经过反反复复的讨论,Tosatti 同意修改接口,让用户空间可以明确控制每个可能会用到的 isolation 功能。实现该 API 的一个 patch set 已于 7 月 30 日发布出来,它增加了一个新的操作(PR_ISOL_FEAT),用于查询 isolation 模式激活时可以被静默掉的那些 action。

顺便说一下:我们社区的新成员可能不知道,20 年前,Tosatti 被人们称为神奇企鹅马塞洛(Marcelo the Wonder Penguin)。

User-managed concurrency groups

今年 5 月的时候,Peter Oskolkov 发布了一组 patch 实现了名为 "user-managed concurrency group" (UMCG) 的机制。这个工作显然是被称为 "Google Fibers" 的 scheduling framework 的一个实现,这自然是可以想象到的最不符合 Google 风格的名字(反讽一下)。这组 patch 起初没有解释清楚它究竟希望实现什么功能,但随着时间的推移,大家越来越清楚这个情况了。

UMCG,旨在成为一个轻量级的、由用户空间控制的 M:N 线程机制。经过人们的一些催促后发布了一个文档,描述了其核心理念。一个用户空间的进程可以设置一个或多个并发组(concurrency group)来管理它的工作。在每个组中,都会有一个或多个 "server" 线程。他的计划似乎是让应用程序针对每个可用的 CPU 都设置一个 server 线程。同时还会有不确定数量的 "worker" 线程,用来执行应用程序需要完成的工作。在任一时刻,每个 server 线程都可以执行一个 worker。用户空间可以随时控制哪些 worker 线程得以运行,具体的方法就是将它们 attach 到 server 上。各种事件(比如 worker 被阻塞在 I/O 上了)的通知处理可以让 server 线程保持忙碌。

在 8 月 1 日版本的 patch set 中,定义了两个系统调用来管理这个机制。调用 umcg_ctl() 就会把一个线程注册为 UMCG task,可以是 server mode,也可以是 worker mode。它还可以进行 unregistration 动作。umcg_wait() 则是主要的调度机制。例如,worker 线程可以用这个 API 来暂停执行。但 server 线程也可以使用 umcg_wait() 来唤醒一个特定的 worker 线程,或者强制从一个 worker 线程切换到另一个 worker 线程。只要 worker 线程继续运行,该调用通常就会一直保持阻塞状态。一旦 umcg_wait() 返回,server 线程就可以选择一个新的 worker 来执行了。

至少看起来是这么回事。几乎没有关于这些系统调用真正会如何被使用的文档,也根本没有示例代码。这组 patch 的最新版本终于包括了一些对系统调用的介绍,此前的版本中完全没有。也许正是这个原因,这项工作到目前为止收到的 review 相对较少。Oskolkov 似乎更专注于内核内的功能的具体实现,但 review 人员会希望能先对用户空间要用的 API 进行较长时间的仔细研究,因为如果这个 API 被合入的话就必须永远都得到支持。UMCG 看起来很有趣,而且可能会很有用,但是这种对 core-kernel 部分的改动,最起码来说也是很难得到 merge 的。到目前为止,由于缺乏对其用法的详细介绍,要想 merge 这组 patch 就会更加困难。

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

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

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

深入GSConv代码:逐行解析这个混合了标准卷积与深度可分离卷积的‘新算子’ 本文深入解析GSConv代码,详细介绍了这个混合标准卷积与深度可分离卷积的‘新算子’的设计哲学与实现框架。通过PyTorch代码逐行分析,揭示GSConv如何在轻量级卷积神经网络中平衡计算效率与特征表达能力,特别适用于Slim-Neck架构,显著降低计算量同时保持高精度。 阅读详情

相关推荐

光伏系统选型指南:5种主流MPPT算法优缺点对比(附选型流程图)

本文深入剖析了光伏系统中五种主流MPPT算法的核心原理与性能差异。通过对比扰动观察法、电导增量法、恒定电压法、模糊逻辑控制及人工智能算法在追踪精度、响应速度、实现成本与稳定性等方面的表现,为不同应用场景(如户用、工商业及大型电站)提供了清晰的选型决策流程图和实战指南,帮助工程师优化系统效率与投资回报。

weixin_29294597的博客 106

Linux 内存管理新特性 - Memory folios 解读 | 龙蜥技术

folios 是什么?

weixin_60347558的博客 878

UnityWebGL异常捕获全攻略:从报错提示到完美解决的3种配置方案

本文详细解析了UnityWebGL项目中异常捕获的三种核心配置方案:禁用异常、仅捕获显式异常以及完全捕获异常(无堆栈跟踪)。通过对比不同方案在构建体积、运行性能及错误信息详细度上的差异,帮助开发者根据开发、测试与发布阶段的不同需求,选择并配置最优的异常处理策略,从而有效提升WebGL应用的调试效率和线上稳定性。

5f4d3s2a1q的博客 398

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

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

Linux News搬运工 1822

LightGBM参数调优实战:从基础到高级技巧

本文深入探讨了LightGBM参数调优的实战技巧。文章从理解其Leaf-wise生长策略的核心逻辑出发,系统性地介绍了分层调参策略:首先调整控制模型结构的参数(如num_leaves),其次优化学习能力参数(如learning_rate),最后通过正则化与随机化参数提升泛化能力。文中还提供了从建立基线到最终微调的完整实战流程与高级避坑指南,帮助读者高效提升模型性能。

i8j9k0l1的博客 261

基于云平台的ATS系统微服务架构方案研究

在当前智慧地铁的升级转型过程中,城市轨道交通ATS系统面临着稳定性差、运维方 式繁琐和故障应急处理效率低等问题。为此,提出一种基于云平台的ATS系统微服务架构方案; 研究了ATS系统在云平台上的微服务总体架构、ATS应用的微服务划分和设计、容器部署方式 及通信交互模式,可实现系统松耦合和易扩展,达到节约计算资源、提高系统稳定性和运营效 率的目的

mi_lan1的博客 966

在Linux 5.15 中有望看到Memory Folios的应用

甲骨文公司的长期内核开发人员 Matthew Wilcox 已经针对“Memory Folios”研究了相当长的一段时间,旨在改善Linux的内存管理并提升效率。而据使用 Memory Folios 的基准测试表明,其可使得内核的构建速度提高 7%。 就目前看来,用户或许有希望在 Linux 5.15 中看到此类代码的应用。Memory Folios 为 Linux 内核提供了一种新的结构类型,以更好地管理内存。先前的补丁系列对现状和新的"Folios"方法的问题进行了更详细的说明: stru..

bingyu1024的博客 292

SpringAi 通过大模型来实现调用自己的Api

摘要 本文介绍了如何利用Spring AI的Tools机制扩展大模型能力,实现业务系统集成。通过@Tool和@ToolParam注解定义工具方法,将订单查询和关闭功能暴露给大模型调用。关键实现包括:1)使用详细描述标注工具方法和参数;2)在ChatClient中注册工具服务;3)集成对话记忆保持上下文。该方法使AI具备操作业务系统的能力,形成"认知-决策-执行"闭环,大幅提升了模型在实际业务场景中的应用价值。

又要搬砖了 835

LWN:让kernel使用更大的block size!

关注了就能看到更多这么棒的文章哦~Moving the kernel to large block sizesBy Jake EdgeSeptember 27, 2023OSSEUChatGPT translationhttps://lwn.net/Articles/945646/使用更大的块大小(block size)进行I/O内核是存储和块层领域经常讨论的话题。这个话题在2023年5月的Lin...

Linux News搬运工 957

ReAct 智能体 Agent:架构解析与实践拓展

ReAct 智能体 Agent 凭借其推理与行动协同的独特架构,在众多人工智能应用场景中展现出巨大的潜力。从智能办公到教育辅导,从智能家居到工业物联网,ReAct 智能体通过精准推理和高效行动,为用户提供了更加智能、便捷的服务体验。然而,在实际应用过程中,仍面临工具调用安全、模型持续学习、多智能体协作管理以及性能优化等多方面的挑战。通过合理的策略和技术创新,如强化工具审核机制、构建持续学习框架、设计高效协作协议和采用性能优化手段,我们有望逐步克服这些挑战,进一步提升 ReAct 智能体的性能和可靠性。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1686

公交车调度排班优化算法研究与实现

本文提出的公交车调度排班优化算法基于遗传算法,能够较好地处理公交车调度排班问题,使得车辆数量和运营时间得到平衡,公交车的使用效率得到了优化。在模拟的公交车路线中,使用本文所提出的算法,得到了一组较优的公交车调度排班方案。其中,车辆数量的多少会影响到公交车的行驶速度和等候时间,而运营时间的长短则会直接影响到公交车的使用效率和成本。本文基于遗传算法,通过随机生成种群、选择、交叉、变异等操作,逐步优化种群中个体的适应度,最终得到较优的公交车调度排班方案。以下是本文中所使用的Matlab代码实现,供参考。

PixelLoom的博客 872

论好名字的重要性: Linux内核page到folio的变迁

一、引子Once upon a time,Netscape的大拿 Phil Karlton曾经说过:“There are only two hard things in Computer Science: cache invalidation and naming things”,成为程序界流传甚广的名言,可见取名是计算机科学中最难的两件事之一。取名,要用名字恰到好处地描述其想描述的事物,要体现代...

内核工匠 3401

零基础实战:用 Docker 和 vLLM 本地部署 bge-reranker-v2-m3 重排序模型

本文介绍了如何利用Docker容器和vLLM推理框架在本地部署BAAI开发的bge-reranker-v2-m3文本排序模型。

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 5971

LWN: kernel中GCC plugin的未来命运!

关注了就能看到更多这么棒的文章哦~The future of GCC plugins in the kernelApril 1, 2021This article was contribu...

Linux News搬运工 1002

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

计算机控制技术及应用

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

LWN:kernel中如何更好地处理字符串!

关注了就能看到更多这么棒的文章哦~Better string handling for the kernelBy Jonathan CorbetOctober 26, 2023ChatGPT translationhttps://lwn.net/Articles/948408/C 语言中有很多功能在当时看起来是个好主意(甚至可能在那时确实是好主意),但现在已经过时了。大多数人可能会同意,字符串处理...

Linux News搬运工 843

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

LWN:kernel defconfig是为谁准备的?

内核的配置选项控制着内核如何构建的诸多方面。它 启用了许多内存管理选项(memory-management options),包括内存热插拔(memory hotplugging)、内核同页合并(kernel samepage merging,KSM)、透明大页(transparent huge pages)、userfaultfd 机制(userfaultfd)、内存控制组(memory control groups)以及 多代 LRU(multi-generational LRU)。

Linux News搬运工 1520

LWN: stable kernel 争论的核心问题!

关注了就能看到更多这么棒的文章哦~The core of the -stable debateBy Jonathan CorbetJuly 22, 2021DeepL assisted t...

Linux News搬运工 456

LWN: kernel Bugzilla的未来计划!

关注了就能看到更多这么棒的文章哦~A plan for the kernel BugzillaBy Jake EdgeOctober 11, 2022DeepL assisted translationhttps://lwn.net/Articles/910740/针对内核的 Bugzilla,人们在很大程度上来说是不怎么喜欢用的,至少 upstream kernel 中大部分 bug 都不是通过...

Linux News搬运工 327

LWN:在kernel中实现完整的task-isolation!

关注了就能看到更多这么棒的文章哦~A full task-isolation mode for the kernelApril 6, 2020This article was contr...

Linux News搬运工 2566

LWN:kernel 的新工具 wprobes, KStackWatch, KFuzzTest!

local_var_offset 和 local_var_len 参数指示了要监控的栈上特定变量的位置和大小,表示为从进入函数时栈指针(stack pointer)的偏移量。然而,该数据的格式并不简单。这项功能在内核环境中可能特别有用,因为内核中同时发生着许多事情,而问题的根源可能存在于一个庞大而复杂的系统中的任何位置。然而,这种测试都是从用户空间运行的,因此它能锻炼的代码受限于内核的用户空间 API。内核所拥有的功能是 kprobe(内核探测点),它允许在运行中的内核中(几乎)任何位置放置调试代码。

Linux News搬运工 1216

LWN: Linux kernel维护者真相与误解!

关注了就能看到更多这么棒的文章哦~MAINTAINERS truth and fictionBy Jonathan CorbetJanuary 14, 2021DeepL assiste...

Linux News搬运工 921

LWN:从kernel向user space发送通知的一个通用方案

点击上方蓝色字关注我们~Generalized events notification and security policiesByJonathan CorbetJu...

Linux News搬运工 1146

LWN:Linux kernel中如何废弃不用的软件和硬件平台!

关注了就能看到更多这么棒的文章哦~Software and hardware obsolescence in the kernelBy Jonathan CorbetAugust 28,...

Linux News搬运工 328

LWN: 5.2内核改动相关的一些统计数字

点击上方蓝色字关注我们~Statistics from the 5.2 kernel — and beforeByJonathan CorbetJune 21, 201...

Linux News搬运工 270

LWN: kernel warning 的时候应该怎么处理?

关注了就能看到更多这么棒的文章哦~What to do in response to a kernel warningBy Jonathan CorbetNovember 18, 2021...

Linux News搬运工 987

LWN:简单又高效!利用bpftrace分析kernel行为

点击上方蓝色字关注我们~Kernel analysis with bpftraceJuly 18, 2019本文由Brendan Gregg 提供在2019 Linux...

Linux News搬运工 2477

LWN:Linux kernel要有几种test framework?

点击上方蓝色字关注我们~How many kernel test frameworks?ByJake EdgeJune 5, 2019Linux kernel的自测试框...

Linux News搬运工 1713
上一篇: LWN:GPSD 中的时间溢出!
下一篇: LWN: 对kernel memcpy() 进行更严格的越界检查!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值