<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[宋宝华]]></title><description><![CDATA[宋宝华]]></description><link>https://blog.csdn.net/21cnbao</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; 21cnbao]]></copyright><item><title><![CDATA[有这么一群人，在一起啃 Linux kernel]]></title><link>https://blog.csdn.net/21cnbao/article/details/161371613</link><guid>https://blog.csdn.net/21cnbao/article/details/161371613</guid><author>21cnbao</author><pubDate>Sun, 24 May 2026 15:04:22 +0800</pubDate><description><![CDATA[说实话，没有那么多传奇故事，更多是很具体的活：看代码路径，复现实验，想清楚场景，写 changelog，发 patch，然后等 review。最开始，是 Barry（宋宝华）老师发起了一张“英雄帖”，把几个愿意花时间啃内核问题的人招呼到了一起。我们想把这些事摊开：看过的代码，做过的实验，踩过的坑，patch 为什么这么写，又为什么被打回来。我们想成为这样的人，也想遇到更多这样的人。我们是一群 Linux kernel 狂热爱好者，没有收益，没有赞助，也没有什么复杂的背景。今天开始，这里就是“笑傲内核”。]]></description><category></category></item><item><title><![CDATA[DMA Buffer Cache同步的批处理优化及高通平台的实践]]></title><link>https://blog.csdn.net/21cnbao/article/details/161349150</link><guid>https://blog.csdn.net/21cnbao/article/details/161349150</guid><author>21cnbao</author><pubDate>Sat, 23 May 2026 15:33:34 +0800</pubDate><description><![CDATA[活动，“笑傲内核”小组核心成员陈雪原将代表小组出席活动，进行主题分享《DMA Buffer Cache同步的批处理优化及高通平台的实践》。2026年5月30日，深圳《]]></description><category></category></item><item><title><![CDATA[绝对不能因为AI而丧失独立思考的能力]]></title><link>https://blog.csdn.net/21cnbao/article/details/161126693</link><guid>https://blog.csdn.net/21cnbao/article/details/161126693</guid><author>21cnbao</author><pubDate>Fri, 15 May 2026 18:23:00 +0800</pubDate><description><![CDATA[对计算机的理解不能丢，对问题本质的理解不能丢，任何时候都要冷静思考，问题是什么，哪行代码最重要，前后逻辑是什么，要在哪里加trace，应该指挥AI写什么样的验证程序。我们应该通过前期的思考，分解问题，找到一个AI干最少的活、最精确的活的方法。绝对不能反过来被AI指挥。很多人有了AI之后，做事情已经完全不用脑子了，一开始没有经过严谨思考就指挥AI干活。现在已经有很多人离了AI已经不知道怎么干活了，就跟离了手机一样整个人就失魂落魄了！我真地觉得我们应该减少对AI的依赖，我们可以依靠AI，但是不能依赖AI。]]></description><category></category></item><item><title><![CDATA[LSF/MM/BPF系列：Yang Shi针对ARM64的this_cpu_ops优化]]></title><link>https://blog.csdn.net/21cnbao/article/details/161028912</link><guid>https://blog.csdn.net/21cnbao/article/details/161028912</guid><author>21cnbao</author><pubDate>Tue, 12 May 2026 18:08:18 +0800</pubDate><description><![CDATA[这里提出了严峻的挑战，就是每个CPU需要有单独的kernel page table，尽管里面绝大多数内容应该是一模一样的（应该也是可以共享的），除了local mapping的这些percpu数据以外。在x86_64情况下，每个CPU通过将各自的。这个__per_cpu_local_off在各个CPU是一样的（关闭抢占也不再必要），当然它们对应的物理页面的位置确实是不同的。对于x86处理器而言，由于segment寄存器的存在，this_cpu_*操作可以一条指令完成，这个过程是原子的。]]></description><category></category></item><item><title><![CDATA[《top-down性能分析法》视频分享]]></title><link>https://blog.csdn.net/21cnbao/article/details/160124877</link><guid>https://blog.csdn.net/21cnbao/article/details/160124877</guid><author>21cnbao</author><pubDate>Mon, 13 Apr 2026 06:23:34 +0800</pubDate><description><![CDATA[几个top-down性能分析的案例，memory bound, frontend bound, false sharing, cache颠簸，prefetch等案例。以及参与内核社区开发贡献志愿者招募流程说明。]]></description><category></category></item><item><title><![CDATA[while(1)；的top-down分析]]></title><link>https://blog.csdn.net/21cnbao/article/details/160421011</link><guid>https://blog.csdn.net/21cnbao/article/details/160421011</guid><author>21cnbao</author><pubDate>Sun, 12 Apr 2026 12:36:39 +0800</pubDate><description><![CDATA[这种极简循环里，它被定义为 Core Bound 的子项，表示“虽然我没卡住（0% Backend Bound），但我已经被这条单指令压榨到了单端口执行的极限”。指令在现代 CPU 中通常在前端就被处理掉（Nop-elimination），或者被分配到一个极其简单的微操作。frontend bound消除，backend bound到15.7%，84.2%的时间在retiring指令。这一半的 Slot 退休了（50% Retiring），另一半空着（50% Frontend Bound）。]]></description><category></category></item><item><title><![CDATA[几个简单程序的top-down性能分析]]></title><link>https://blog.csdn.net/21cnbao/article/details/160063346</link><guid>https://blog.csdn.net/21cnbao/article/details/160063346</guid><author>21cnbao</author><pubDate>Sat, 11 Apr 2026 19:44:21 +0800</pubDate><description><![CDATA[另外，在无false sharing情况下，Backend_Bound.Core_Bound.Ports_Utilization明显变高，有用功做地更多。可以看出backend bound里面core bound的比例大幅提高到55.9%，而memory bound的比例则减小到18.2%。core bound占据23.1%，memory bound占据21.9%，memory bound主要在L3 bound。它几乎没有backend bound，都是frontend bound和retiring。]]></description><category></category></item><item><title><![CDATA[本周日下午5点活动《top-down性能分析法》]]></title><link>https://blog.csdn.net/21cnbao/article/details/159999746</link><guid>https://blog.csdn.net/21cnbao/article/details/159999746</guid><author>21cnbao</author><pubDate>Thu, 09 Apr 2026 17:42:08 +0800</pubDate><description><![CDATA[2. 会议主题2: 招募对内核真诚热爱的狂热分子一起参与Linux内核社区工作，难题攻关（前期将主要负责问题建模和数据采集）。Barry Song invites you to a meeting on VooV Meeting（腾讯会议） —— 《top-down性能分析法》无需报名，4:57开放会议进入，先进先得。1. 通过几个实例来分析处理器执行指令时候的top-down模型和数据采集方法，程序执行的瓶颈，IPC因为什么而下降。你将得不到一毛钱工资，但是我将真诚地和你一起工作。》），欢迎你的加入。]]></description><category></category></item><item><title><![CDATA[AWS工程师报告PostgreSQL性能在Linux 7.0下降50%到底是怎么一回事？]]></title><link>https://blog.csdn.net/21cnbao/article/details/159933868</link><guid>https://blog.csdn.net/21cnbao/article/details/159933868</guid><author>21cnbao</author><pubDate>Tue, 07 Apr 2026 11:02:05 +0800</pubDate><description><![CDATA[假设没有PREEMPT_LAZY的情况下（PREEMPT情况），fair调度类的task b本身可以在时刻1抢占task a，而随着PREEMPT_LAZY的引入，这个抢占需要延迟到下一个tick的到来。优先级继承和优先级顶棚的故事听起来动人，但是他们本质上是拆东墙补西墙，在简单的RTOS和workload有一定作用（尤其是锁依赖链简单的系统），在复杂的系统经常。它指出7.0内核使用PREEMPT_LAZY默认替代服务器领域的PREEMPT_NONE后，用户态的一个spinlock存在疯狂自旋。]]></description><category></category></item><item><title><![CDATA[4个内核狂热分子今天又卷了一天]]></title><link>https://blog.csdn.net/21cnbao/article/details/159837223</link><guid>https://blog.csdn.net/21cnbao/article/details/159837223</guid><author>21cnbao</author><pubDate>Sat, 04 Apr 2026 18:14:05 +0800</pubDate><description><![CDATA[原先Patchset提出的设想是，在I/O等待的page fault retry路径上采用per-vma lock替换mmap_lock锁，以缓解rwsem锁的优先级翻转，而Matthew Wilcox提出这个方法可能没有修复Google的一个问题：memcg超载后，第一次page fault虽然给I/O申请了folio，但是retry PF近来的时候，folio已经被LRU回收，于是导致workload无法推进！建模，把复杂的问题能通过简单的模型说清楚，这是解决问题的最关键一步！]]></description><category></category></item><item><title><![CDATA[我们的老朋友茶总推出了一个memcg BPF hooks]]></title><link>https://blog.csdn.net/21cnbao/article/details/159807941</link><guid>https://blog.csdn.net/21cnbao/article/details/159807941</guid><author>21cnbao</author><pubDate>Fri, 03 Apr 2026 08:03:47 +0800</pubDate><description><![CDATA[具体来说，当某个tool call的 cgroup 超过其软限制（soft limit）或硬限制（hard limit）时，AgentCgroup 会通过这些钩子插入自定义逻辑，控制throttle的延迟，从而更有效地利用内存资源。企图给 Linux 内核的memcg添加 eBPF 扩展能力，主要目标是让用户态的 eBPF 程序可以动态介入内存 cgroup 的行为，例如内存压力判断和 throttle 策略等 — 本质上是开放内核内存控制逻辑的 hook 接口。茶总一出，谁与争锋。倚天屠龙，横扫江湖。]]></description><category></category></item><item><title><![CDATA[C23的一个溢出检测增强]]></title><link>https://blog.csdn.net/21cnbao/article/details/159621274</link><guid>https://blog.csdn.net/21cnbao/article/details/159621274</guid><author>21cnbao</author><pubDate>Sun, 29 Mar 2026 07:53:36 +0800</pubDate><description><![CDATA[时间回退到公元2009年，笔者在blackfin arch上面工作，有一个IP通话的软件(我甚至已经忘了它的名字)，在测试过程中，时不时会随机挂断或者crash。这个ktime会在2038年溢出，而两个ktime_add则会在更早的时间点溢出。__builtin_add_overflow 是一个编译器内建函数（builtin），不是标准 C 的一部分，但在GCC 和Clang 里都支持。在很久很久以前，大森林里面住着许多奇妙的生灵。从那一天开始，笔者就对运算溢出保持着本能的警惕，进入防御性编程的模式。]]></description><category></category></item><item><title><![CDATA[EROFS文件系统概述]]></title><link>https://blog.csdn.net/21cnbao/article/details/159341350</link><guid>https://blog.csdn.net/21cnbao/article/details/159341350</guid><author>21cnbao</author><pubDate>Sat, 21 Mar 2026 18:23:35 +0800</pubDate><description><![CDATA[因此，在容器场景下，若未对镜像来源强管控（或镜像管控出现漏洞），使用未经检查的、通用文件系统格式的不可信镜像将严重威胁宿主机集群安全。为解决上述问题，Docker 镜像（后由 OCI 组织标准化）采用了更简单且符合 POSIX 标准的 TAR 归档格式来构建、分发和部署镜像，通过 AUFS / OverlayFS 读写分离，把可写层完全隔离在可信的通用文件系统中（即用户的本地文件系统，不随远程不可信镜像分发），从而解决了不可信磁盘镜像的安全风险，并通过 Gzip 压缩进一步减小了体积。]]></description><category></category></item><item><title><![CDATA[Reconsidering the multi-generational LRU]]></title><link>https://blog.csdn.net/21cnbao/article/details/159274973</link><guid>https://blog.csdn.net/21cnbao/article/details/159274973</guid><author>21cnbao</author><pubDate>Thu, 19 Mar 2026 14:03:06 +0800</pubDate><description><![CDATA[原文出处：]]></description><category></category></item><item><title><![CDATA[sg dma缓冲区cache同步批处理优化]]></title><link>https://blog.csdn.net/21cnbao/article/details/159153666</link><guid>https://blog.csdn.net/21cnbao/article/details/159153666</guid><author>21cnbao</author><pubDate>Mon, 16 Mar 2026 17:43:09 +0800</pubDate><description><![CDATA[当然，也有相当多的硬件并不支持CPU和外设之间的cache coherence的，这种情况下，无论是面向CPU还是device，都可能需要进行cache的clean/invalidate动作，这类动作往往比较昂贵，成为火焰图热点。结合arm64微架构的知识以及dsb的原理，这里有个优化机会，可以N个entries只发一次dsb，即最后一次性dsb等待前面的N个cache操作完成。经笔者观察，目前arm64的相关实现，采用的每个sg entry进行一个cache动作，然后就发dsb同步等待的方式。]]></description><category></category></item><item><title><![CDATA[淘宝内核组001号员工，20年经验“小菜鸟”：我用AI写代码，但不担心“手艺”退化]]></title><link>https://blog.csdn.net/21cnbao/article/details/159063226</link><guid>https://blog.csdn.net/21cnbao/article/details/159063226</guid><author>21cnbao</author><pubDate>Sat, 14 Mar 2026 04:15:51 +0800</pubDate><description><![CDATA[采访 | 梦依丹       嘉宾 | 李勇责编 ｜张红月出品 | CSDN（ID：CSDNnews）“系统软件领域博大精深，和高手相比我还是小菜鸟。不过菜也不妨碍我喜欢，不妨碍我开心。”“好奇心和热爱，是我一直以来持续终身学习和做选择的原动力。”这不仅是资深 Linux 内核开发者李勇的自我剖白，也是他二十余年技术人生的最佳注脚。他曾与 Linus Torvalds 同台论道，是淘宝内核组的“001号员工”，亲手开启了中国互联网公司自研内核的时代。他参与过 OCFS2、Bcache 等多个重量级项目，是圈]]></description><category></category></item><item><title><![CDATA[nullfs：让initramfs也可以umount和pivot_root]]></title><link>https://blog.csdn.net/21cnbao/article/details/158987184</link><guid>https://blog.csdn.net/21cnbao/article/details/158987184</guid><author>21cnbao</author><pubDate>Thu, 12 Mar 2026 16:05:51 +0800</pubDate><description><![CDATA[在nullfs出现之前，因为原始的initramfs rootfs是内核启动时的“始祖”，它是不可卸载的。所以，从initramfs切换到磁盘rootfs目前的做法非常“暴力”：开发者必须手动递归删除 initramfs 里的所有文件。Linux 7.0推出了一个重要的特性：nullfs(空文件系统)，一个完全immutable的假的根文件系统。此时，虽然新旧根都在同一个路径点上，但新根在“下面”（作为真正的根），旧根在“上面”（作为一个覆盖层挂载点）。它是一个完全不可变的、永远为空的单实例文件系统。]]></description><category></category></item><item><title><![CDATA[meminspect和minidump: 只dump调试感兴趣的memory]]></title><link>https://blog.csdn.net/21cnbao/article/details/158950987</link><guid>https://blog.csdn.net/21cnbao/article/details/158950987</guid><author>21cnbao</author><pubDate>Wed, 11 Mar 2026 05:24:53 +0800</pubDate><description><![CDATA[要关注的内存区域可能包括2类：静态内存（全部变量之类的）和动态内存（可能动态申请和释放，因此region可能add或者remove）。这一点需要接受，因为这是减少 dump 体积所带来的必然权衡。meminspect只是标内存region的，它最终还是要与其他调试工具连通。用于在 Qualcomm 平台上导出最小化的 crash dump 信息。的做法，我们可以只保留必要的数据。这样做的意义在于：在生产环境中，以便后续排查问题，因此减少每个 dump 的体积非常重要。这些信息可以支持最基本的系统状态分析。]]></description><category></category></item><item><title><![CDATA[Linux内核可编程与AI驱动的资源控制或成为未来的主流]]></title><link>https://blog.csdn.net/21cnbao/article/details/158905115</link><guid>https://blog.csdn.net/21cnbao/article/details/158905115</guid><author>21cnbao</author><pubDate>Tue, 10 Mar 2026 09:21:37 +0800</pubDate><description><![CDATA[另外，当agent未来成为mainstream，agent intention驱动的资源控制，或许比现在操作系统的reaction模型靠谱。因为agent知道自己接下来想干什么，需要多少资源，所以它可以用它的intention，提早规划CPU、memory、I/O资源。但是用户的需求经常是burst的，比如瞬间的资源需求大量增加。AI主导的资源控制或更加进行prediction的资源控制，在资源瓶颈到来前，提早规划，从而规避未来的瓶颈。1. 内核可编程，一些策略性的东西会有越来越多的人提出eBPF的诉求。]]></description><category></category></item><item><title><![CDATA[谈一谈服务器CPU拓扑架构与Linux调度的问题]]></title><link>https://blog.csdn.net/21cnbao/article/details/158875963</link><guid>https://blog.csdn.net/21cnbao/article/details/158875963</guid><author>21cnbao</author><pubDate>Mon, 09 Mar 2026 07:38:10 +0800</pubDate><description><![CDATA[NUMA的跳数想象成一个从你和你老婆，到你爸妈，再到你兄弟姐妹，再到你堂兄堂姐妹的系统。自己到老婆是0hop（在同一个NUMA，当然家里的小娃、狗狗也属于同一个NUMA，可以参与搬砖），到自己的爹妈是1hop，到兄弟姐妹是2hops，到堂兄弟姐妹是3hops，当然，你还可以有各种表亲，4hops，5hops什么的。当然，你的爹妈，你的兄弟姐妹，你的堂兄堂弟，你的远方亲戚，他们也同样有自己的0hop夫妻，1hop爹妈，2hops兄弟姐妹，这些人接到了同样的workload，就是往自己家里搬10000块砖。]]></description><category></category></item></channel></rss>