知识卡片
上下文切换是网络IO延迟的根源
内容
用普通 socket 收发数据时,每次调用都要触发系统调用、从用户态切到内核态处理、再切回来,中间还伴随若干次内存拷贝;Ceph 默认三副本时,客户端一次写请求至少要经过 6 次这样的网络通信,上下文切换和内存拷贝的开销会被成倍放大。RDMA 和 DPDK 是两种绕开它的思路:RDMA 让应用在用户态直接把数据写进网卡内存、经网络直达对端应用缓存,全程不经过内核和额外拷贝;DPDK 则用轮询取代中断通知,网卡收到包后直接零拷贝存入用户态内存,避免了中断带来的上下文切换。发散:两者本质都是”绕过内核”这一条路径——凡是内核态/用户态切换本身构成瓶颈的高吞吐场景(不止分布式存储,高频交易、DPDK 转发面都是同类问题),思路都是把数据搬运挪到用户态自己管。
参考来源
《Ceph分布式存储实战》第9章《Ceph硬件选型、性能测试与优化》