Linux 6.6 UDP GRO 收包调用链源码分析 1. 概述GRO(Generic Receive Offload,通用接收卸载)是 Linux 内核网络栈中的一项关键性能优化技术。其核心思想是在数据包进入协议栈入口处,将属于同一条流/五元组的多个小包合并为一个大的“超级包”(super-skb),从而显著减少上层协议栈的处理次数,提升网络吞吐量。 GRO 的处理是分层进行的:在网口驱动的napi处理函数里,依次经过链路层 → IP 层 2026-09-29
deepseek 总结的html绘图规范 版本:v2(汇总至第 40 轮迭代)参考原型:https://martinbj2008.github.io/html/fib_animation.html适用场景:Linux 内核数据结构关系图(数组 / 链表 / 树 / 注册表)的静态 SVG 绘制 1. 参考原型:martinbj 的 FIB 画页打开原页面,可以提炼出以下视觉约定(本项目沿用了其中大部分): 2026-09-29
Linux 6.6 UDP Socket connect 调用链源码分析 1. 概述UDP 是无连接协议,但应用程序仍可调用 connect() 将 socket 与远端地址绑定。对于 UDP 而言,connect() 并不进行三次握手,而是完成路由查找及 socket 状态和路由缓存的更新。 1.1. 小结UDP socket 的 connect() 调用在内核中经历了一条清晰的路径: 系统调用层 系统调用通过 ops 找到 ip4_datagram_connec 2026-09-24
内核启动:从 ACPI 到 device_add 的 PCI 枚举调用链 梳理 X86_64 服务器内核启动阶段,ACPI 子系统如何一路调用到 device_add(&dev->dev),完成 PCI 设备的注册与 driver core 接入。 本文中所有代码引用均基于内核 v7.2-rc2-22-g0e35b9b6ec0f 的源码。【Claude-4.7-Opus】 0.1. 调用链全景12345678910111213141516171819202 2026-07-16 AI #ai #linux-kernel #pcie #pci #enumeration #acpi
Linux 驱动 ko 动态加载:uevent、udev、kmod 协作机制 姊妹篇 Linux 内核 PCI:pci_dev 是如何与 driver 建立绑定的 提到:当 pci_dev 枚举出来时,若对应驱动的 ko 还没加载,路径 A 会”空手而归”,pci_dev 只是”就位”等待。真正让这条链闭合的,是内核 → udev → kmod → modprobe → pci_register_driver → 路径 B 回补 probe 这一套用户态协作。 本文专门梳理 2026-07-09 AI #ai #linux-kernel #udev #kmod #uevent #modalias #hotplug
Linux 内核 PCI:pci_dev 是如何与 driver 建立绑定的(match / probe 双路径) 本文接续 Linux 内核 PCI 枚举:pci_scan_slot 及其调用链梳理,讨论 pci_device_add() 末尾那一句 device_add(&dev->dev) 之后,driver core 到底做了什么,pci_dev 是如何”找到”驱动并最终跑到驱动 .probe 的。 本文中所有代码引用均基于内核 v7.2-rc2-22-g0e35b9b6ec0f 的源码。 2026-07-09 AI #ai #linux-kernel #pcie #pci #driver-core #probe
Linux 内核 PCI 枚举:pci_scan_slot 及其调用链梳理 本文梳理 Linux 内核 PCI 枚举过程中 pci_scan_slot 函数及其调用链的实现。 本文中所有代码引用均基于内核 v7.2-rc2-22-g0e35b9b6ec0f 的源码。【Claude-4.7-Opus】 1234567891011121314pci_scan_slot(bus, devfn=D×8) └─► pci_scan_single_device(bus, D×8+f 2026-07-09 AI #ai #linux-kernel #pcie #pci #enumeration
PCIe ARI(Alternative Routing-ID Interpretation):为什么需要 & 如何工作 本文整理了 PCIe ARI 的背景动机与技术方法,以及 Linux 内核在 PCI 枚举扫描过程中对 ARI 的使用方式。讨论主线:传统 PCI BDF 的 8-function 限制 → SR-IOV 大量 VF 的编址困境 → ARI 的解决方案 → 内核实现细节。 本文中所有代码引用均基于内核 v7.2-rc2-22-g0e35b9b6ec0f 的源码。【Claude-4.7-Opus】 2026-07-09 AI #ai #linux-kernel #pcie #pci #sr-iov #ari
SONiC Port MTU 更新流程详解(以 Tofino 芯片为例) 0.1. 场景 用户在 SONiC 设备上执行 sudo config interface mtu eth0 2000,把 eth0 端口的 MTU 改为 2000。 本文从 CLI 一路追踪到 ASIC 硬件寄存器写入,覆盖每一层涉及的进程、Redis 数据库变化、消息通道、关键代码与时间顺序。 本文中所有代码引用均基于本机 /Users/martinzhang/git/sonic/ 目录下的真 2026-06-30 AI #ai #sonic #sai
nftables Set:用 O(1) 哈希查找替代 O(N) 链表遍历 一句话核心:nftables 把”原本要逐条匹配的规则”抽象成”集合 (set) 元素”,数据面只需对集合做一次哈希/树查找就能拿到结果,从根本上消除了 iptables 时代”规则数 = 服务数 × k”带来的 O(N) 线性遍历瓶颈。 0.1. 一、问题起源:iptables 为何慢在 iptables 时代,K8s 5000 个 Service 会被翻译成几万条规则 2026-06-26 AI #ai #nftables