Skip to content

[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%
  • P2M:
    • FIO:
      • 8MB 顺序读
      • DDIO 对该大小的请求无用
      • 固定给 4 个核,打满 PCIe 带宽

这些内容主要是证明 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 负载不均衡