知识卡片
fast_dispatch与dispatch的性能分级设计
内容
消息接收后有两条处理路径:能走快速路径的消息由 Pipe 的接收线程直接调用 ms_fast_dispatch 就地处理,不经过任何队列;其余消息被塞进 DispatchQueue 的优先级队列 mqueue,由唯一的分发线程串行调用 ms_dispatch 处理。快路径牺牲了统一排队带来的顺序性和线程隔离,换来更低的延迟;慢路径保留单线程处理的简单性和消息优先级排序,但吞吐受限于这一个分发线程。同一个系统按消息重要性/紧急度分流到不同代价的处理路径,是高性能系统常见的分级设计。
参考来源
《Ceph源码分析》第3章《Ceph网络通信》