零拷贝技术:降低网络延迟实战

📚 共计 30 章节
01
网络IO的痛点
传统IO模型的数据拷贝路径、上下文切换开销、为什么网络延迟高?
IO模型延迟分析
02
零拷贝技术原理
DMA技术、mmap、sendfile、splice、tee系统调用详解。
DMA系统调用
03
mmap实战
使用mmap实现高效文件传输、与read/write的性能对比。
内存映射性能
04
sendfile实战
使用sendfile实现零拷贝网络传输、大文件传输优化。
零拷贝大文件
05
splice实战
使用splice实现两个文件描述符之间的数据搬运、管道应用。
splice管道
06
PageCache与零拷贝
PageCache的作用、大文件场景下的问题、直接IO。
PageCache直接IO
07
Kafka中的零拷贝
Kafka为什么快?索引文件与日志文件的零拷贝实现。
Kafka消息队列
08
Netty中的零拷贝
CompositeByteBuf、FileRegion、内存池。
Netty内存池
09
Nginx中的零拷贝
sendfile配置、静态文件服务优化。
Nginx静态文件
10
DPDK基础
DPDK是什么?绕过内核协议栈、用户态驱动。
DPDK用户态
11
DPDK环境搭建
大页内存配置、网卡绑定、编译运行helloworld。
环境大页
12
DPDK收发包流程
mbuf、ring、poll mode驱动、无中断模式。
收发包轮询
13
DPDK零拷贝实践
从网卡到应用的无拷贝数据路径。
零拷贝数据路径
14
RDMA基础
RDMA概念、IB与RoCEv2、Verbs API。
RDMAIB
15
RDMA环境搭建
安装Mellanox网卡驱动、配置RDMA设备。
驱动配置
16
RDMA编程入门
ibv_open_device、ibv_alloc_pd、ibv_create_cq。
Verbs编程
17
RDMA零拷贝实践
MR注册、内存映射、远程直接读写。
MR远程读写
18
XDP基础
XDP是什么?BPF程序挂载点、XDP动作。
XDPBPF
19
XDP实战
使用XDP实现高速包过滤、绕过协议栈。
包过滤高速
20
io_uring基础
io_uring是什么?SQ与CQ、liburing库。
io_uring异步
21
io_uring零拷贝
IORING_OP_READ_FIXED、IORING_OP_WRITE_FIXED。
固定缓冲区零拷贝
22
io_uring网络编程
accept、recv、send的异步化。
网络异步
23
零拷贝性能对比
不同技术在不同场景下的延迟与吞吐量对比。
性能对比
24
大页内存
透明大页、显式大页、对零拷贝的影响。
大页TLB
25
CPU亲和性与NUMA
绑核、跨NUMA访问对性能的影响。
NUMA绑核
26
网络延迟测量
eBPF、perf、bpftrace等工具的使用。
eBPFperf
27
常见坑与调优
mmap文件截断问题、sendfile大文件问题、PageCache污染。
调优
28
综合案例1
构建一个基于sendfile+epoll的高性能静态文件服务器。
sendfileepoll
29
综合案例2
构建一个基于DPDK的UDP包转发应用。
DPDKUDP
30
综合案例3
构建一个基于io_uring的echo server。
io_uringecho