ultilegs
高频技术文档

低延迟系统工程实战

来自低延迟交易服务端的一线工程实践,共 81 篇。

Linux 内核/系统 26 篇

  1. ACCESS_ONCE()/WRITE_ONCE()/READ_ONCE()
  2. 内存分配器擂台:jemalloc vs tcmalloc vs mimalloc vs glibc
  3. daemon 进程的创建
  4. 【eBPF 系列】eBPF 追踪实战:用 bpftrace 在生产环境找到那个慢请求
  5. 【eBPF 系列】eBPF + 容器:Cilium 的数据面为什么不再需要 iptables
  6. 【eBPF 系列】eBPF + io_uring:Linux 高性能网络栈的终极形态
  7. 【eBPF 系列】eBPF 性能分析工具链:perf → BCC → bpftrace → Parca 的演化
  8. 【eBPF 系列】eBPF 安全监控:不改内核也能审计 syscall
  9. eBPF 系列文章索引
  10. 【eBPF 系列】eBPF:Linux 内核的隐藏武器
  11. EEVDF 调度器:Linux 6.6 为什么换掉了 CFS
  12. Linux 异步 I/O:epoll 与 io_uring 对比
  13. linux 文件I/O
  14. fsync 失败的真相:当它返回错误,你的数据可能已经没了
  15. io_uring 在生产环境翻车实录:内核 bug、资源泄漏和你不知道的限制
  16. 从零实现一个无锁并发哈希表
  17. 大多数'无锁'代码其实不是无锁的
  18. Linux 内核的内存屏障:一个让我调了三天的 bug
  19. 程序在虚拟内存中的布局
  20. 【rsync 原理】差异同步算法:滚动校验与两级匹配
  21. 【rsync 原理】协议、进程模型与实测
  22. Linux 高并发服务器参数调优
  23. Linux进程的调度
  24. linux 中进程的状态
  25. 【eBPF 系列】XDP:在网卡驱动层就把包丢掉
  26. Zero Copy 的肮脏真相:它什么时候反而更慢

Linux 网络协议栈 25 篇

  1. 【Linux 网络子系统深度拆解】sk_buff 全解:内核网络包的终极容器
  2. 【Linux 网络子系统深度拆解】net_device 与网卡驱动模型:从硬件到内核的接口契约
  3. 【Linux 网络子系统深度拆解】收包路径全解:从 NIC 中断到 socket 接收队列
  4. 【Linux 网络子系统深度拆解】发包路径全解:从 send() 到网线
  5. 【Linux 网络子系统深度拆解】软中断与 ksoftirqd:网络包处理的调度引擎
  6. 【Linux 网络子系统深度拆解】IP 层内核实现:路由查找、分片与转发
  7. 【Linux 网络子系统深度拆解】TCP 内核实现(上):连接管理与状态机
  8. 【Linux 网络子系统深度拆解】TCP 内核实现(下):数据传输与拥塞控制
  9. 【Linux 网络子系统深度拆解】UDP 内核实现与 socket lookup 优化
  10. 【Linux 网络子系统深度拆解】Socket 层内核实现:从 VFS 到协议栈的桥梁
  11. 【Linux 网络子系统深度拆解】邻居子系统与 ARP:L2 地址解析的内核实现
  12. 【Linux 网络子系统深度拆解】路由子系统深度拆解:FIB、策略路由与路由缓存
  13. 【Linux 网络子系统深度拆解】Netfilter 内核实现:钩子、conntrack 与 NAT
  14. 【Linux 网络子系统深度拆解】Traffic Control 深度拆解:qdisc、class 与 filter
  15. 【Linux 网络子系统深度拆解】网络命名空间:内核级网络隔离的实现
  16. 【Linux 网络子系统深度拆解】虚拟网络设备内核实现:veth、bridge 与 macvlan
  17. 【Linux 网络子系统深度拆解】隧道协议内核实现:VXLAN、IPIP、GRE 与 WireGuard
  18. 【Linux 网络子系统深度拆解】多队列与流量分发:RSS/RPS/RFS/XPS
  19. 【Linux 网络子系统深度拆解】分段卸载:GRO/GSO/TSO 的内核实现与陷阱
  20. 【Linux 网络子系统深度拆解】网络子系统内存管理:sk_buff 分配、page pool 与 NUMA
  21. 【Linux 网络子系统深度拆解】XDP 内核实现:在驱动层重编程网络栈
  22. 【Linux 网络子系统深度拆解】eBPF 网络钩子全景:TC/XDP/socket/cgroup
  23. 【Linux 网络子系统深度拆解】内核网络追踪工具箱:bpftrace/perf/ftrace 实战
  24. 【Linux 网络子系统深度拆解】网络丢包定位:从 drop_monitor 到 kfree_skb 追踪
  25. 【Linux 网络子系统深度拆解】内核网络调优方法论:从基准测试到生产验证

io_uring 10 篇

  1. 【io_uring 系列】io_uring 核心原理:Linux 异步 I/O 的新纪元
  2. 【io_uring 系列】巅峰对决:io_uring vs epoll 性能与架构对比
  3. 【io_uring 系列】liburing 基础 API 详解:从 Hello World 到文件 I/O
  4. 【io_uring 系列】实战:基于 io_uring 的 TCP Echo Server
  5. 【io_uring 系列】io_uring 高级特性:榨干性能极限
  6. 【io_uring 系列】Libevent 对 io_uring 的支持现状
  7. 【io_uring 系列】反思与打破神话:为何特定场景 epoll 比 io_uring 更高效
  8. 【io_uring 系列】Go 如何集成 io_uring:从 CGO 封装到纯 Go 实现
  9. 【io_uring 系列】事件驱动代码的调试艺术:当回调成为迷宫
  10. 【io_uring 系列】io_uring 多线程编程模式:从线程安全到架构选型

容器原理 13 篇

  1. 【从零造容器】Linux Namespaces:用 50 行 C 隔离一个进程
  2. 【从零造容器】Network Namespace:给你的进程接上虚拟网线
  3. 【从零造容器】Mount Namespace 与 pivot_root:构建容器文件系统
  4. 【从零造容器】Cgroups v2:让容器不能吃掉整台机器
  5. 【从零造容器】OverlayFS:一层一层像洋葱
  6. 【从零造容器】用 Go 组装迷你容器运行时:把积木拼起来
  7. 【从零造容器】OCI 规范兼容:让迷你运行时说标准语言
  8. 【从零造容器】Seccomp-BPF 与 Capabilities:容器安全的两道防线
  9. 【从零造容器】User Namespace 与 Rootless 容器:不需要 root 也能跑
  10. 【从零造容器】容器 vs microVM:Firecracker 凭什么 125ms 启动
  11. 【从零造容器】容器网络性能真相:veth vs macvlan vs eBPF 数据面
  12. 【从零造容器】runc 源码考古:OCI 参考实现到底长什么样
  13. 【从零造容器】microVM 实战:Firecracker API 启动与容器对比实测

K8s 网络 7 篇

  1. 【Kubernetes 网络深度系列】Linux 网络栈全景:一个包从网卡到用户态的完整旅程
  2. 【Kubernetes 网络深度系列】虚拟网络设备:veth / bridge / tun/tap / macvlan / ipvlan
  3. 【Kubernetes 网络深度系列】Netfilter 与 iptables:Linux 防火墙的灵魂
  4. 【Kubernetes 网络深度系列】路由与隧道:Linux 怎么决定一个包往哪走
  5. 【Kubernetes 网络深度系列】BGP 基础:互联网的路由协议,也是 K8s 网络的关键拼图
  6. 【Kubernetes 网络深度系列】eBPF 网络编程:从 XDP 到 TC,可编程数据面入门
  7. 【Kubernetes 网络深度系列】eBPF 网络子系统的演进:从 hook 到可编程网络操作系统