Linux Kernel

18 篇内容

技术文章LWN.net

[$] Block-layer error injection

文章介绍 Christoph Hellwig 提出的块层错误注入补丁系列。现有内核支持多种注入块层 I/O 错误的方法,但都无法直接指定要失败的操作、返回的状态码或直接针对特定磁盘,通常需要叠加设备,导致测试对象变成映射设备而非真实磁盘。新方案通过每个磁盘的 debugfs 文件提供可配置接口,能够选择操作类型、返回状态码并直接作用于目标磁盘,补齐了现有错误注入能力的三个缺口。该机制主要用于测试存储代码对异常硬件故障的响应,增强块层和文件系统的可靠性验证。

推荐收录,因为它清晰说明了块层错误注入的现有局限、新接口的设计动机和实现方式,对内核存储开发者、测试工程师和文件系统可靠性验证具有直接参考价值。文中提到的按操作类型和状态码注入错误、直接针对真实磁盘的思路是可迁移的故障注入方法,适合需要构建块层故障测试场景的读者。

技术文章LWN.net

[$] KVM planes head for takeoff

本文介绍了KVM社区正在开发的KVM planes功能,旨在为Linux虚拟化系统提供统一的安全域隔离抽象层。随着CPU厂商推出AMD SEV、Intel TDX等多种硬件安全方案,应用开发者面临碎片化困境,KVM planes尝试将虚拟机资源(如CPU、内存)划分为不同planes,利用底层硬件特性但向用户态暴露一致接口。文章讨论了设计目标、关键机制(如嵌套虚拟化支持)以及当前开发进展,指出项目处于早期阶段,需处理多架构兼容与性能权衡,对上游集成尚有大量工作。

该文章深入解析了KVM planes的设计动机与技术要点,来自权威Linux内核技术新闻源LWN,具有长期参考价值。适合关注虚拟化安全、内核抽象层开发的工程师和研究者,其中对异构硬件安全方案统一接口的探索思路可迁移至其他同类系统设计。

技术文章LWN.net

[$] Bringing BPF to binfmt_misc

文章介绍了 Linux 内核的 binfmt_misc 机制,该机制允许用户空间配置任意可执行文件格式的透明执行。作者分析了现有机制的局限,并重点讨论了即将引入的 BPF 支持,使内核可以通过 BPF 程序动态决定如何运行给定程序。更新旨在提升灵活性和可编程性,同时保持向后兼容。文章还涉及相关安全考量、性能影响以及潜在的实现挑战,适合关注内核运行时可扩展性的技术人员。

LWN 文章深度解析了内核二进制格式处理的演进,详细说明了 binfmt_misc 与 BPF 结合的动机、原理和设计权衡,为系统软件开发者提供了可迁移的运行时扩展思路,适合研究内核和自定义执行环境的读者,长期参考价值明确。

技术文章LWN.net

[$] Examining other network namespaces using BPF

文章记录了 Jordan Rife 在 2026 年 LSFMM+BPF 峰会上提出的需求:让具有适当权限的 BPF 程序能够遍历其他网络命名空间中的套接字,以支持 Cilium 等容器网络工具。与会 BPF 开发者快速提出了多种替代方案,包括扩展现有 socket iterator、利用 bpf_sk_lookup 辅助函数、通过内核模块或系统调用接口等,并深入讨论了性能开销、权限模型、可维护性及安全边界。最终倾向于基于已有基础设施进行增强,避免引入全新机制,同时严格限制程序权限。这一讨论为 BPF 网络编程与命名空间隔离的交互提供了当前的技术共识和设计权衡。

本文源自 LWN 对内核社区峰会的权威报道,直接呈现了 BPF 网络编程中一个实际工程需求的讨论过程,包含多种实现路径的具体权衡和专家观点,而非浮于表面。适合从事内核、容器网络或 BPF 开发的工程师和研究者,从中理解如何在内核机制中平衡功能扩展与安全边界,以及如何利用现有基础设施降低复杂度,具有很高的可迁移设计参考价值。

技术文章LWN.net

[$] FUSE status and plans

本文记录了2026年Linux存储、文件系统、内存管理和BPF峰会上关于FUSE(用户空间文件系统)的BoF讨论。FUSE维护者Miklos Szeredi主持了会议,重点介绍了当前维护面临的挑战、正在推进的功能及其状态,以及他对全新FUSE API的计划。社区对FUSE的兴趣和近期活动明显增加,讨论涉及如何解决现有设计局限、提升性能和扩展能力。文章从内核开发者视角出发,反映了子系统演进中的工程权衡和长期方向,为关注Linux文件系统、用户空间接口及内核API设计的读者提供了第一手的规划信息和发展背景。

本文源自LWN对一线内核开发者BoF的深度报道,提供了FUSE维护者公开讨论的技术痛点、功能路线和API重构思路,证据具体且可信。适合从事Linux文件系统开发、内核模块设计或依赖FUSE的用户空间文件系统构建者阅读,可借此预判技术走向并提前适配。文中关于子系统技术债处理、API演进和社区协作的实践思路,对理解大型内核项目的长期工程决策也具迁移价值。

工程实践知乎 - 鹅厂架构师

内核全栈诊断工具:一体化解锁稳定性与性能

文章介绍了 TencentOS 内核全栈诊断工具的设计理念、功能组成和定制方法。工具覆盖 fs/io、网络、内存、KVM 等领域,沉淀了超过 20 个子工具,已在线上部署并解决上百例稳定性与性能问题。核心能力包括函数级时延分析(支持 running 时延、block 时延以及多函数横向时延追踪)、稳定性问题检查(如页缓存扫描、内存踩踏、挂载数量检测等),以及通过修改 scene_template.c 模板快速定制诊断逻辑的机制。文章详细说明了积木式组合和槽位填空式架构,使已有工具可自由组装,也允许在预留槽位中插入新函数,极大降低了定制门槛。文中给出具体代码示例和命令行接口,展示了从定位时延瓶颈到沉淀子工具的完整工程实践路径。该工具依赖 TencentOS 内核特性,需安装专用 rpm 包和内核开发包,定制需具备内核代码理解能力。

推荐收录,因为文章不是简单的工具使用手册,而是系统阐述了内核诊断工具的整体设计思路、定制框架和工程落地经验,并提供真实代码与线上案例。对内核开发者、SRE 及从事操作系统性能与稳定性优化的工程师具有直接参考价值,其积木式、槽位式的可扩展架构设计可迁移至其他内核可观测性系统的建设中。

技术文章LWN.net

[$] Debugging information for inlined functions

文章报道了 Alan Maguire 在 LSFMM+BPF 2026 峰会上关于在内核 BTF 调试信息中支持内联函数的提案。当前 BPF 程序通过 BTF 定位内核函数进行跟踪,但内联函数因无固定地址而无法被追踪。Maguire 建议扩展 BTF 格式以编码内联函数信息,如源代码位置和调用链,从而使跟踪工具能解析并附着探针。该方案需在 BTF 大小、复杂性和调试完整性之间权衡,并依赖编译器生成所需信息。这有助于提升 BPF 可观测性,但可能增加内核二进制体积,并需社区对格式变更达成共识。

推荐收录,因为它介绍了内核社区为解决 BPF 跟踪内联函数难题而提出的 BTF 扩展方案,涵盖了从问题、技术机制到潜在取舍的完整讨论。对从事内核调试、可观测性及 BPF 工具开发的读者,本文提供了关于跟踪信息格式设计及其工程权衡的一手参考,有助于理解内核调试基础设施的演进方向。

技术文章LWN.net

[$] Progress toward compiling Linux with gccrs

文章介绍了gccrs项目在2026年上半年以编译Linux内核为目标所取得的进展。通过针对内核crate进行测试,开发团队在属性处理、名称解析和资源管理等领域发现并修复了多个问题,显著提升了生成正确代码的能力。尽管目前编译器仅能处理简单的独立程序,但项目报告显示未来数月有望快速改善。文章基于项目周报和月报,呈现了编译器前端开发中遇到的具体技术挑战和解决过程。

推荐收录,因为它详细记录了将Rust前端集成到GCC中的工程实践,特别是针对Linux内核编译的具体适配工作和问题解决。这些内容对编译器开发者、Rust for Linux贡献者以及关注系统工具链进展的读者具有直接的参考价值,其中属性处理、名称解析等问题的解决思路可迁移至类似项目。

技术文章LWN.net

[$] Hazard pointers for the kernel

文章介绍了hazard pointers作为内核RCU机制的替代方案,用于实现无锁数据更新。作者从原理层面比较了两者的内存开销、延迟和回收确定性,指出hazard pointers在低内存占用和及时回收方面的优势。文章还结合内核社区正在评估的实现,讨论了并发内存排序、安全语义以及实际部署中的工程权衡。内容适合理解内核无锁、垃圾回收机制和并发数据结构的读者,但未深入特定硬件架构或极端性能测试。

文章从原理、优缺点和工程可行性多角度剖析了hazard pointers在内核中的应用,具备深度的技术比较和清晰的适用边界说明。对于系统开发者、内核工程师或关注高性能并发的读者,本文可作为理解无锁同步替代方案的优质参考,迁移价值高。

技术文章LWN.net

[$] An operations structure for swap devices

文章介绍了在2026年LSFMM+BPF峰会上提出的为Linux内核交换子系统创建操作结构的构想。交换子系统在演进过程中缺乏统一的抽象层来接口底层存储,导致接口复杂且难以维护。作者分析了当前交换设备接口的实现方式和局限性,讨论了创建一个专门的操作结构(ops structure)以简化设计和完善抽象的可能性,并指出最终实现途径可能与最初设想有所不同。文章展示了内核社区在成熟子系统中引入现代化架构重构的思考过程和设计权衡,对理解内核演进和软件设计具有长期参考价值,但未涉及具体实现细节和最终补丁。

本文深入剖析了Linux内核交换层接口的架构缺陷和重构动机,提供了从历史演进中识别设计债务并规划重构的典型案例。适合内核开发者、系统软件工程师和软件架构师学习如何在成熟系统中引入抽象层,具有可迁移的软件设计价值,技术内容具体、边界清晰,符合长期精选库的收录标准。

技术文章LWN.net

[$] Debating the role of large language models in the kernel community

本文梳理了Linux内核社区围绕大语言模型在开发过程中的角色展开的讨论,重点包括Linus Torvalds的强硬表态、对LLM输出归属的要求、代码审查工具的使用、对专有工具依赖的担忧以及伦理层面的争议。文章呈现了社区内部不同的立场,例如对代码质量、许可证合规和贡献者信任的权衡。讨论表明,内核社区尚未形成统一政策,但正通过具体案例和原则性争论逐步明晰边界。尽管该议题高度依赖内核社区的独特文化和治理模式,但其探讨的归因、工具中立性和伦理问题可为其他开源项目提供参照。文章未深入技术实现,而是聚焦社区协作和治理的实践层面。

本文是开源社区面对LLM技术冲击的鲜活案例,记录了Linus Torvalds等内核维护者围绕代码归属、审查工具和伦理风险的辩论。这不仅为关注开源治理的读者提供了决策参照,其所揭示的归因透明、工具中立等原则也可迁移至其他工程团队,但需注意内核文化的特殊性可能影响推广程度。

技术文章Fzakaria Blog

Linux kernel will support $ORIGIN, sort of

本文介绍了作者通过向 Linux 内核提交补丁,使内核支持在 PT_INTERP 和 shebang 中使用 $ORIGIN 的过程。最初提议在 VFS 层直接添加支持,经 VFS 维护者 Christian Brauner 建议,最终采用 eBPF 和 binfmt_misc 实现可编程解释器选择。文章展示了具体的 eBPF 程序示例,并讨论了新的 loader substitution 模式(L 标志),该模式允许原生执行二进制文件并透明替换解释器,解决了传统 binfmt_misc 中进程标识和 /proc/self/exe 指向解释器的问题。作者计划在相关补丁进入内核主线后,为 NixOS 开发一个可选模块,通过引入新的程序段(如 PT_INTERP_NIX)来保持向后兼容性。该方法不仅支持 $ORIGIN,还可用于动态选择 QEMU 等解释器,边界在于需要内核版本支持且依赖 binfmt_misc 和 eBPF 基础设施。

本文记录了真实的内核开发协作过程,从动机、技术方案迭代到最终实现,展示了如何利用 eBPF 和 binfmt_misc 解决可重定位二进制文件的痛点。对 Linux 内核开发、Nix/Bazel 等构建系统使用者以及关注动态链接器机制的技术人员有直接参考价值,其可编程解释器选择的思路可迁移至其他需要动态加载或仿真环境的场景。

工程实践Fzakaria Blog

Linux kernel will support $ORIGIN, sort of

文章记录了作者为支持 Nix 的 relocatable binaries 而向 Linux 内核提交补丁的完整过程。最初尝试在 VFS 层直接支持 $ORIGIN 失败后,在 VFS 维护者 Christian Brauner 的建议下,转而利用 eBPF 和 binfmt_misc 实现可编程解释器选择。最终方案通过 eBPF 程序在运行时根据 ELF 文件路径动态确定解释器,无需修改内核主体,并衍生出新的分发模式(如 loader substitution 'L')以解决传统 binfmt_misc 导致的进程身份透明性问题。文章还讨论了该机制在 QEMU、shebang 等场景的扩展潜力,并保留了向后兼容性设计——通过新增 PT_INTERP_NIX 段来控制触发。作者展望了在 NixOS 中的集成计划,同时坦诚说明了内核参与门槛、eBPF 所需的配置依赖等边界。

该文以一线开发者的视角完整呈现了一项内核特性的工程实现路径,从问题定义、社区协作、技术方案演化到最终合入主线的全过程,具有很高的可迁移价值。对从事包管理、容器化或需要定制可执行文件加载流程的工程师而言,它不仅展示了 eBPF 在系统软件中的创新用法,还深入分析了 binfmt_misc 的传统缺陷与改进思路,是理解现代 Linux 可执行文件加载机制和内核贡献方法论的良好参考。

技术文章LWN.net

[$] Securing BPF LSMs against tampering

本文报道了 Christian Brauner 在 2026 年 Linux 存储、文件系统、内存管理和 BPF 峰会上的演讲,聚焦于 BPF 作为 Linux 安全模块(LSM)时面临的篡改与移除风险。Brauner 指出,systemd 等项目已利用 BPF LSM 增强安全,但当前机制无法保证 BPF 程序及其私密数据不被恶意卸载或修改。文章梳理了现有 BPF LSM 的部署约束,并提出了增强保护的需求:例如防止程序被强制卸载、保护运行时私密数据免受其他进程访问。讨论还涉及内核态与用户态的信任边界、LSM 钩子的生命周期管理,以及引入持久化 BPF 程序引用计数的可能方向。这些思考为容器、系统守护进程和强制访问控制场景下的安全加固提供了设计参考,但方案仍处于早期提议阶段,尚未落地实现。

推荐收录,因为文章记录了主流 Linux 安全机制的前沿演进:BPF 作为 LSM 的实践风险与防御设计。内容来自核心开发者演讲,提供了清晰的威胁模型和架构级讨论,对从事内核安全、容器隔离或系统加固的工程师有直接参考价值。早期方案的取舍与未解决问题也能帮助读者理解当前机制的边界。

工程实践LWN.net

[$] Lockless MPSC FIFO queues for io_uring

文章介绍了 Linux 7.2 内核中 io_uring 子系统将工作项跟踪机制从标准链表替换为无锁多生产者单消费者(MPSC)队列的工程实践。作者逐步解释了无锁队列的设计原理,包括原子操作、内存顺序和使用场景,并展示了该变更带来的显著性能提升。文章还讨论了无锁算法在正确性与性能之间的权衡,以及该实现为何适用于 io_uring 的特定工作负载。内容聚焦于真实工程问题、具体实现取舍和可验证的效果,为理解内核并发优化提供了清晰的案例。

推荐收录,因为该文不仅报告了性能提升结果,更深入解析了无锁 MPSC 队列在内核中的具体设计和正确性保障,展示了从问题识别到算法选择、验证的全过程。对从事内核开发、高性能系统设计或对无锁编程感兴趣的读者有直接参考价值,其设计思路和分析方法可迁移至其他并发场景。

工程实践Meta Engineering

Modernizing the Meta Ads Service With an Open-Source Kernel Scheduler

文章介绍 Meta 广告服务在 Linux 内核升级至 6.9 时遭遇 EEVDF 调度器导致的延迟回归,影响广告排序。团队利用开源的 sched_ext(BPF 扩展调度框架)构建了面向广告交付的自定义调度策略,通过将 CPU 软分区为延迟关键池和非关键池,并根据负载动态调整池大小,显著提升最后一级缓存局部性。初始部署在最大广告服务器上后,广告检索的 p99 延迟降低 28%,功耗节省 3.28 兆瓦,加权广告排名提升 1.1%,后续两次用户空间策略更新进一步降低延迟并减少超时错误。该方案将调度优化从依赖内核发版的路径中解耦,使迭代周期从数月缩短至数天,并将 sched_ext 从短期修复发展为持续优化平台,同时已上游化至 Linux v6.12。文章未探讨该策略对其他混部负载的公平性影响,且定制策略需依工作负载特性重新设计。

推荐收录,因为它提供了一个完整的高负载服务调度优化工程案例,从问题诊断、基于 sched_ext 的自定义策略实现到量化效果验证,证据充分。适合基础设施、后端性能优化和 SRE 读者,文中展示的软分区、缓存局部性利用以及借助 BPF 快速迭代的方法可迁移至其他延迟敏感系统。

工程实践LWN.net

[$] Shielding running kernels against exploits with BPF

文章介绍了 Cisco 在为众多运行自定义内核的设备部署安全补丁时面临的挑战,以及 John Fastabend 在 2026 LSFMM+BPF 峰会上提出的基于 BPF 的运行时内核漏洞利用防护方案。该方法通过 BPF 程序动态注入缓解策略,无需重新编译或重启即可快速响应内核漏洞,已在 Cisco 实际场景测试。但作者指出当前方案因内核钩子数量有限而无法全面覆盖攻击面,未来需扩展 BPF 钩子以实现更广泛的保护。

本文展示了利用 BPF 进行内核漏洞缓解的工程实践,为嵌入式或自定义 Linux 系统的快速安全响应提供了轻量级思路。适合关注 Linux 安全、eBPF 应用或系统维护的读者,其核心方法可迁移至其他需要动态安全策略的场景,但需注意当前方案对钩子扩展的依赖。

技术文章LWN.net

[$] Faster RCUs and lockless memory allocation

文章围绕 Linux 内核里两项彼此关联的改进展开:一是 Puranjay Mohan 关于提升 RCU 性能的工作,二是 Harry Yoo 和 Alexei Starovoitov 提出的 kmalloc_nolock(),后者允许在任意内核上下文中进行无锁分配。作者先解释 kmalloc_nolock() 如何借助 RCU 保证并发安全,再回到 RCU 本身的开销来源,说明这些优化为什么能缓解热点路径上的锁竞争。文章强调,这类改动主要服务于高并发、上下文受限的内核路径,并不意味着所有分配都可以无条件去锁。它提供了从 API 设计到同步语义的完整背景,但结论高度依赖 Linux 内核的实现细节。

收录理由很明确:文章直接讨论了 RCU 性能优化与 kmalloc_nolock() 无锁分配这两个内核机制,并交代它们之间的同步关系和性能动机。适合内核、存储、BPF 和系统性能工程读者,尤其是需要理解高并发路径上锁竞争与内存分配约束的场景;可迁移价值在于同步语义和 API 设计的权衡方法。