sg dma缓冲区cache同步批处理优化 宋宝华 5 days 4 hours ago 当然,也有相当多的硬件并不支持CPU和外设之间的cache coherence的,这种情况下,无论是面向CPU还是device,都可能需要进行cache的clean/invalidate动作,这类动作往往比较昂贵,成为火焰图热点。结合arm64微架构的知识以及dsb的原理,这里有个优化机会,可以N个entries只发一次dsb,即最后一次性dsb等待前面的N个cache操作完成。经笔者观察,目前arm64的相关实现,采用的每个sg entry进行一个cache动作,然后就发dsb同步等待的方式。 21cnbao
淘宝内核组001号员工,20年经验“小菜鸟”:我用AI写代码,但不担心“手艺”退化 宋宝华 1 week ago 采访 | 梦依丹 嘉宾 | 李勇责编 |张红月出品 | CSDN(ID:CSDNnews)“系统软件领域博大精深,和高手相比我还是小菜鸟。不过菜也不妨碍我喜欢,不妨碍我开心。”“好奇心和热爱,是我一直以来持续终身学习和做选择的原动力。”这不仅是资深 Linux 内核开发者李勇的自我剖白,也是他二十余年技术人生的最佳注脚。他曾与 Linus Torvalds 同台论道,是淘宝内核组的“001号员工”,亲手开启了中国互联网公司自研内核的时代。他参与过 OCFS2、Bcache 等多个重量级项目,是圈 21cnbao
nullfs:让initramfs也可以umount和pivot_root 宋宝华 1 week 2 days ago 在nullfs出现之前,因为原始的initramfs rootfs是内核启动时的“始祖”,它是不可卸载的。所以,从initramfs切换到磁盘rootfs目前的做法非常“暴力”:开发者必须手动递归删除 initramfs 里的所有文件。Linux 7.0推出了一个重要的特性:nullfs(空文件系统),一个完全immutable的假的根文件系统。此时,虽然新旧根都在同一个路径点上,但新根在“下面”(作为真正的根),旧根在“上面”(作为一个覆盖层挂载点)。它是一个完全不可变的、永远为空的单实例文件系统。 21cnbao
meminspect和minidump: 只dump调试感兴趣的memory 宋宝华 1 week 3 days ago 要关注的内存区域可能包括2类:静态内存(全部变量之类的)和动态内存(可能动态申请和释放,因此region可能add或者remove)。这一点需要接受,因为这是减少 dump 体积所带来的必然权衡。meminspect只是标内存region的,它最终还是要与其他调试工具连通。用于在 Qualcomm 平台上导出最小化的 crash dump 信息。的做法,我们可以只保留必要的数据。这样做的意义在于:在生产环境中,以便后续排查问题,因此减少每个 dump 的体积非常重要。这些信息可以支持最基本的系统状态分析。 21cnbao
Linux内核可编程与AI驱动的资源控制或成为未来的主流 宋宝华 1 week 4 days ago 另外,当agent未来成为mainstream,agent intention驱动的资源控制,或许比现在操作系统的reaction模型靠谱。因为agent知道自己接下来想干什么,需要多少资源,所以它可以用它的intention,提早规划CPU、memory、I/O资源。但是用户的需求经常是burst的,比如瞬间的资源需求大量增加。AI主导的资源控制或更加进行prediction的资源控制,在资源瓶颈到来前,提早规划,从而规避未来的瓶颈。1. 内核可编程,一些策略性的东西会有越来越多的人提出eBPF的诉求。 21cnbao
谈一谈服务器CPU拓扑架构与Linux调度的问题 宋宝华 1 week 5 days ago NUMA的跳数想象成一个从你和你老婆,到你爸妈,再到你兄弟姐妹,再到你堂兄堂姐妹的系统。自己到老婆是0hop(在同一个NUMA,当然家里的小娃、狗狗也属于同一个NUMA,可以参与搬砖),到自己的爹妈是1hop,到兄弟姐妹是2hops,到堂兄弟姐妹是3hops,当然,你还可以有各种表亲,4hops,5hops什么的。当然,你的爹妈,你的兄弟姐妹,你的堂兄堂弟,你的远方亲戚,他们也同样有自己的0hop夫妻,1hop爹妈,2hops兄弟姐妹,这些人接到了同样的workload,就是往自己家里搬10000块砖。 21cnbao
分享Linux内核新春活动结出的果实 宋宝华 2 weeks 6 days ago 这几天Xueyuan做出了很多的贡献,在我的dma-mapping: support batched cache sync的patchset v3的测试环节,可以说是废寝忘食,也填补了与我时差的空白。大家因为共同的爱好而聚在一起,就是最好的缘分。》,该活动收获了一个重要的果实,志愿者和爱好者Xueyuan Chen主动加入、积极和我一起参与社区的工作。我的分享不到一小时,只播下了一粒小小的种子,但收获远远超过了付出。 21cnbao
MGLRU问题5应对: 延迟到map时激活readahead的folios 宋宝华 3 weeks 2 days ago MGLRU会在page fault上下文,把预读的folio都自动激活到LRU的youngest位置,但是这些预读的folios可能并不会真地访问。但是他们占据了LRU里面最不容易被回收的有利位置,却不是真正的热页。最终导致大量不必要的refault。发送了一个RFC的草案。该草案将folio激活延迟到最终map folio的时刻。如果folio没有最终被map,将不会被激活,从而更加易于回收。后续需要和社区一起讨论出最终可登录mainline的代码。针对昨天讨论的MGLRU问题5(《 21cnbao
荣耀在MGLRU内存回收上的发力或恰到好处 宋宝华 3 weeks 3 days ago MGLRU在社区已经存在一段时间了,作为比传统active/inactive LRU更加先进的回收算法,在Android领域的应用也逐步兴起,但是直接用还是有很多问题需要解决。关于MGLRU的更多细节,可以阅读笔者之前的《我们更加不需要堆砌patch的数量,只有一步一个脚印做,让每个脚印都闪闪发光、天日可见、人神共赏,才是立足之道,也是真正的踏实,哪怕只走了10步,也比胡乱堆砌的1000步强。可行的 workaround:强制把老的文件 folio 升代,但可能导致文件页在稍年轻代聚集问题; 21cnbao
Jim Huang的《Improve Load Balancing withMachine Learning Techniques basedon sched_ext Framework》 宋宝华 3 weeks 4 days ago Jim Huang的《Improve Load Balancing withMachine Learning Techniques basedon sched_ext Framework》值得一读。 21cnbao
为了忘却的纪念——2022 Linux 内核十大技术革新功能 | 年终盘点 宋宝华 3 weeks 6 days ago 本文来自 CSDN 重磅策划的《2022 年技术年度盘点》栏目。2022 年,智能技术变革留下了深刻的脚印,各行各业数字化升级催生了更多新需求。过去一年,亦是机遇与挑战并存的一年。在本篇文章中,长期奋斗在一线的 Linux 内核开发者、经典书籍《Linux 设备驱动开发详解》作者宋宝华老师为大家解剖 2022 年 Linux 内核开发的十大革新技术功能,纪念这平凡而又不凡的 Linux 内核之旅。作者 | 宋宝华 责编 | 梦依丹出品 | CSDN(ID:CSDNnews)滚滚长江东逝水,浪花 21cnbao
熠熠生辉 | 2023 年 Linux 内核十大技术革新功能 宋宝华 3 weeks 6 days ago 这个机制我们在2022年终盘点中也有提及。在Steven的patch里面,仍然不可能允许用户态去关闭抢占调度,但是用户态在拿spinlock时,可以对内核进行某种暗示(比如通过在一片用户空间和内核空间共享的内存填充一个RSEQ_CR_FLAG_IN_CRITICAL_SECTION),当task B企图在A的临界区抢占的时候,内核看到这个flag,可以让抢占稍微延后一点时间允许A继续执行,这样正在spinlock临界区执行的线程A可以利用这段延后的时间,把自己的临界区执行完,这样C的自旋等待将大为缩短。 21cnbao
2024年Linux内核十大技术革新盘点|年终盘点 宋宝华 3 weeks 6 days ago 这样开销未免就有点太大了,其实仔细看DEFINE_ALLOC_TAG的定义,它定义的是一个static struct alloc_tag _alloc_tag的,关键是static,而且link在一个特定的section里面:__section(ALLOC_TAG_SECTION_NAME),所以,用我的tag地址,减去section的开始地址就差不多得到tag在线性区域的存放位置了。但是公平其实可以被另外一种方式来实现,CFS的算法是谁的虚拟运行时间最小,就跑谁(欠谁的钱多,先还谁); 21cnbao
2025 年 Linux 内核十大技术创新|年终盘点 宋宝华 1 month ago 目前 6.17 合入的是一个 baby step,支持 P1 和 P2 本身在一个 CPU 上的时候的代理执行,目前显然没有实际意义,因为哪怕手机只有 8 个核,P1 和 P2 在同一个 CPU 的机会也很渺茫。由于 swap table 的显著优势来源于查询路径的缩短、locality 的提升、lock contention 的减小,相对 xarray 加速了 swapcache 的查询、修改等操作,属于基础设施的改善,其优势在服务器等场景会呈现较大的实用价值,对一些关键业务的吞吐量带来提升。 21cnbao
sched_ext: 让不同workload的不同cgroup有不同的调度器 宋宝华 1 month ago 来自Tejun Heo,为 sched_ext 增加了基于cgroup 的子调度器(sub-scheduler)支持,使多个 BPF 调度器可以按 cgroup 层级结构协同运行:父调度器负责在不同 cgroup(租户/分区)之间分配 CPU 资源,子调度器负责各自 cgroup 内部的任务调度。父 scheduler的。上图中,数据库系统的调度器能够理解查询的优先级和锁持有者的重要性(criticality)。虚拟机管理程序(VMM)可以与虚拟机内部的调度器协同,并智能地安排 vCPU 的位置。 21cnbao
延迟抢占用户态线程:调度器时间片扩展time slice extension 宋宝华 1 month 1 week ago 当内核同意时间片扩展时,会把 rseq::slice_ctrl::request清零,并将 rseq::slice_ctrl::granted置为 1,表示扩展已批准;想象用户态的线程A拿到了spinlock,由于用户态spinlock并不会像内核态spinlock那样禁止抢占,完全有可能线程B抢占线程A,线程B可能运行很久,而假设线程C需要等待线程A的spinlock释放,这个C的等待可能是非常长的。rseq::slice_ctrl::request =1,它。RSEQ的时间片扩展工作,主要由。 21cnbao
公平CFS调度类:SCHED_NORMAL、SCHED_BATCH和SCHED_IDLE 宋宝华 1 year 2 months ago 公平CFS调度类:SCHED_NORMAL、SCHED_BATCH和SCHED_IDLE,它们的相同与不同。 21cnbao