Linux-Networking

兩台機器之間的 DPDK/RDMA 是否提供比本地主機 ping 更低的延遲

  • September 14, 2021

我知道環回將通過核心網路堆棧直到到達 IP 層,包括系統呼叫成本和一些記憶體複製成本。DPDK 和 RDMA 使用不同的技術來避免這些。

所以假設我有兩台機器通過 dpdk/rdma 連接,然後我進行網路延遲測試,這會比一台機器上的環回更快嗎?我ping localhost對 CPU E5-2630 v4 @ 2.20GHz 進行了快速測試,平均為 0.010ms。

我在使用 vstart.sh 測試我的 ceph 集群時提出了這個問題,我想最小化網路延遲,以便仔細分析 osd 相關程式碼如何影響延遲。

根據通過評論進行的對話,真正的問題是Does DPDK/RDMA between 2 machines gives lower latency than localhost ping

$$ Answer $$是的,你可以達到同樣的效果。但有一些注意事項

  1. DPDKrte_eth_tx_burst僅將數據包描述符排入 PCIe 上的 DMA 以發送流量。這實際上並沒有將數據包發送出去。
  2. DPDKrte_eth_tx_buffer_flush將任何先前緩衝的數據包顯式刷新到硬體。
  3. 通過修改每個字節來操縱 ICMP 請求(RX 緩衝區)的成本很高,相反,選擇rte_pktmbuf_alloc獲取 mbuf 並將 ref_cnt 設置為 250。
  4. 使用正確的乙太網、IP 和 ICMP 有效負載數據準備新緩衝區

因此,使用正確的 NIC(支持低延遲傳輸)、DPDK API rte_eth_tx_buffer_flush 以及將 ref_cnt 更新為更高值的預分配 mbuf,您可以 0.010ms平均實現。

注意:為了獲得更好的基線,使用 packet-generator 或 packet Balster 向目標機器發送 ICMP 請求與 Kernel 和 DPDK 解決方案來比較線路速率的實際載入性能,例如 1%、5%、10%、25%、50% , 75%, 100%。

引用自:https://serverfault.com/questions/1054370