[SIGCOMM'24] Understanding the Host Network¶
数据中心生产环境中,研究人员注意到节点内互联网络(CPU、内存、PCIe 设备等)的竞争导致应用的端到端性能下降。该篇研究分析节点内各组件的互联行为、产生该现象的原因,以启发设计面向未来的网络栈、操作系统和硬件。
该篇文章的关键思想是基于域划分的信用式流量控制。
引言¶
划分域和通信类型:
- P2M:网络、存储
 - C2M:存内数据库、图分析
 
两种模式:
- 蓝色模式(新发现):P2M 会显著干扰 C2M 性能,自身却不受影响,即使内存带宽未饱和
 - 红色模式:内存带宽饱和时,P2M 和 C2M 互相干扰
 
实验 1¶
实验预备:
- C2M:
- Redis:
- 每个核一个独立服务器,每个服务端对应一个客户端,UNIX Socket 通信
 - 服务端:1M KV 对,其中 V 大小为 1KB,工作集远超 LLC,观察到 cache miss > 95%
 
 
 - Redis:
 - P2M:
- FIO:
- 8MB 顺序读
 - DDIO 对该大小的请求无用
 - 固定给 4 个核,打满 PCIe 带宽
 
 
 - FIO:
 
这些内容主要是证明 C2M 和 P2M 设计为不受 Cache 的影响,测试的是真实的内存的带宽。还考虑了其他影响:
- Prefetch:开启/关闭影响 < 5%
 
实验 2¶
修改 Benchmark,更好地控制访存模式。
- C2M-Read:从 1GB Buffer 顺序读
 - C2M-ReadWrite:向 1GB Buffer 顺序写
- CacheLine 需要先读入再写回,因此是一半读一半写
 
 - P2M-Read:纯写入
 - P2M-Write:纯读取
 
关闭 prefetch 和 DDIO
实验 3¶
用内核网络栈或硬件卸载 RDMA 网络栈产生 P2M 流量,效果相同。
分析¶
主机网络结构¶
- Core 和 L1/L2
 - CHA
- LLC
 
 - IIO
 - MC
 
数据通路¶
C2M Read:Cache Miss 发生时
- L1 Miss,分配 LFB
 - L2 MIss,发送到 CHA
 - LLC Miss,发送到 MC,进入 RPQ 排队
 - 读取数据,填充 Cache
 
C2M Write:Cache Eviction 发生时,数据通路类似。不同的是,写是异步的,请求交给 CHA 后 CPU 就无需等待了,CHA 将请求交给 WRQ 后也无需等待了。
P2M ReadWrite:
- 向 IIO 发起 DMA 请求,分配 IIO 缓存
 - IIO 以 Cacheline 粒度向 CHA 请求
 - CHA 请求 MC,进入 RQ 排队
 - 完成数据读写,返回 IIO
 
流控¶
主机内互联采用 hop-by-hop 的流控,保证无损:
- PCIe 采用 credits 执行请求
 - DRAM 采用时序控制
 
credit-based flow control:
- consume credit: send one request
 - replenish credit: request acknowledged by receiver
 
本文提出的 domain-by-domain 流控泛化了 end-to-end 和 hop-by-hop 流控的概念
吞吐量上界:
- C:
- C2M:LFB
 - P2M:IIO Buffer
 
 
解释¶
蓝色模式¶
C2M-Read + P2M-Write 时,为什么 C2M 性能受影响而 P2M 不受影响?
- CPU 以 3GHz 频率发送指令,令 LFB 满
 - C2M-Read 延迟约 70ns,远高于 CPU 周期 0.3ns,因此 Domain 延迟的任何微小上升都会导致性能下降
 - P2M-Write 时 MC 排队,导致 DRAM 部分延迟上升,即使内存带宽未饱和
 - DRAM 未饱和排队原因:
- 行缓存 Miss
 - Bank 负载不均衡