操作系统内功
进程 · 内存 · 文件 · IO · 网络 · 容器,写给应用工程师的系统底层课
应用程序跑在内核提供的一层抽象之上:进程是调度的单位、虚拟内存是地址的单位、文件是 IO 的单位,而这一切的成本最终都会出现在你的延迟曲线和账单里。这个知识库用十篇成体系的长文,把操作系统最影响后端工程的十块内功讲透:进程与线程、虚拟内存、内存分配、文件系统与 Page Cache、IO 多路复用、零拷贝、TCP、容器底座、eBPF 与性能观测方法论。每篇都以真实事故开题、以工程清单收尾,硬事实全部锚定官方文档与一手来源。
一、进程与内存 3 篇
操作系统内功 · 第 1 篇|进程与线程:fork 的 CoW 代价与 EEVDF 新调度器
进程与线程是后端工程师用得最多、想得最少的两个抽象。本篇从 2014 年 Redis 的 THP 延迟尖刺事故开题,讲透 fork 写时复制的真实账单、上下文切换从 1.2 微秒到 800% 开销的完整谱系,以及 2023 年随 Linux 6.6 登场、取代 CFS 的 EEVDF 新调度器。
操作系统内功 · 第 2 篇|虚拟内存:页表、TLB 与一次缺页中断的旅程
malloc 返回的指针为什么「立刻可用」却几乎不花时间?一台 64GB 机器为什么能 mmap 500GB 的文件?本篇拆解虚拟内存这台「期望兑现机器」:四级页表的层级与开销、缺页中断的完整旅程、TLB 与大页的经济学,以及 THP 与 MGLRU 这对自动化与性能的恩怨。
操作系统内功 · 第 3 篇|内存分配内幕:伙伴系统、SLUB 与 glibc 碎片连环事故
RSS 缓慢上涨、堆剖析却查不到泄漏,最后被 OOM killer 一枪带走——这类事故的根源常常不是泄漏,而是分配器的碎片化。本篇从内核的伙伴系统讲到 SLUB,再对比 ptmalloc、tcmalloc、jemalloc 三国志,把 OOM killer 的判决逻辑和 overcommit 的三种姿势一次讲透。
二、存储与 IO 3 篇
操作系统内功 · 第 4 篇|文件系统与 Page Cache:fsync 到底向你承诺了什么
2018 年 PostgreSQL 社区发现 Linux 可能在 fsync 返回成功后丢掉报错、让下一次 fsync 假成功——fsyncgate 事件把「fsync 承诺什么」逼到了台前。本篇从 VFS 与 Page Cache 讲到脏页回写、ext4 日志、fsyncgate 完整始末与 O_DIRECT 双缓冲之争。
操作系统内功 · 第 5 篇|IO 多路复用:从 select 1024 上限到 epoll 事件循环
1999 年提出的 C10K 问题催生了 nginx 与 epoll 时代。本篇拆解 select 的三宗罪、epoll 红黑树加就绪链表的两件套、LT 与 ET 两种敲门语义,讲清惊群问题的三代解法,并解释 Redis 为什么单线程也能扛十万连接、io_uring 又补上了哪块短板。
操作系统内功 · 第 6 篇|零拷贝:sendfile 与 Kafka 高吞吐的底层密码
同样是发文件,普通路径要 4 次拷贝 2 次系统调用,Kafka 却能在一台普通机器上把消费速率顶到网卡极限——差距就在零拷贝。本篇算清 read+write 的完整拷贝账单,讲透 sendfile 与 SG-DMA 的两档进化、splice 与 mmap 的取舍,以及 nginx 与 TLS 时代的现实约束。
三、网络与容器 2 篇
操作系统内功 · 第 7 篇|TCP 深水区:TIME_WAIT、Nagle 陷阱与 BBR 拥塞控制
大促高峰端口耗尽、接口莫名多出 40ms、跨洋传输慢成龟速——后端最常见的三类 TCP 生产疑难,根源都藏在本篇:TIME_WAIT 的 2MSL 债务、Nagle 与 delayed ACK 的相互等待、以及从 CUBIC 到 BBR 的拥塞控制换代。附 syncookies 与 TCP Fast Open 的现实约束。
操作系统内功 · 第 8 篇|容器底座:namespace、overlayfs 与 cgroup v2
容器不是虚拟机——没有 guest kernel,只有三个内核老特性的组合拳:namespace 管隔离、overlayfs 管镜像、cgroup 管配额。本篇拆解 namespace 八兄弟的分工与 user namespace 的安全争议、overlayfs 的 copy-up 机制、cgroup v2 统一层级,以及 K8s 里 OOM 误杀的完整逻辑链。
四、可观测与工具 2 篇
操作系统内功 · 第 9 篇|eBPF:从抓包过滤器到内核可编程层
一门 1992 年为 tcpdump 设计的过滤语言,三十年后成了云原生时代的「内核可编程层」:Cloudflare 用它单核丢弃一千万包/秒,Cilium 用它替换 kube-proxy,全行业却也在收紧它的权限。本篇讲透 eBPF 的验证器、CO-RE 可移植性、XDP 实战与安全争议。
操作系统内功 · 第 10 篇|性能观测方法论:USE 方法、火焰图与 P99 尾延迟
「系统变慢了」是最难的工单——工具人人都有,方法论才分高下。系列收官篇讲透三套底层功法:给每个资源问三个问题的 USE 方法、让热点自己浮出来的火焰图、以及 P99 为什么比均值重要的尾延迟理论,外加压测圈最大的谎言「协调遗漏」。