Linux

負載時網路延遲減少

  • February 13, 2021

我正在做一個實驗來查看 CPU 負載對網路延遲的影響。我的結果毫無意義,我希望你能理解它。這些機器通過兩個網路連結連接。

First link:
[ Host A ] < --        InfiniBand  (200 Gbps)        -- > [ Host B ]

Second link:
[ Host A ] < -- Ethernet --> [ Switch ] <-- Ethernet -- > [ Host B ]

在此處輸入圖像描述

上面是空閒的主機 A 和主機 B 通過乙太網和 InfiniBand ping 主機 A。乙太網中值延遲為 0.550 毫秒,InfiniBand 中值延遲為 0.330 毫秒。

在此處輸入圖像描述

上面是一個壓力主機 A 和主機 B 通過乙太網和 InfiniBand ping 主機 A。乙太網中值延遲現在為 0.360 毫秒,InfiniBand 中值延遲為 0.115 毫秒。

兩台主機都執行 Ubuntu 20.04 和 Linux 5.8。

為什麼當我對主機 A 的所有核心施加壓力時,我的網路延遲會降低?

這是完全正常的。讓我更詳細地解釋一下。空閒核心(沒有工作要做的程序)將 CPU 置於省電模式,並可能降低 CPU 的核心頻率。

每當一個數據包到達網卡時,網卡就會引發一個中斷,向核心發出“網路數據包已到達”的信號。這需要處理,直到核心網路堆棧決定發送 ping 回复。現在談到響應時間,預設的 linux 核心調度程序並沒有對此進行優化,因為通常情況下,回复在 0.3 毫秒或 0.1 毫秒內到達都沒有關係。

現在考慮一下:活動 CPU 處於最大 CPU 頻率,並且不需要從省電模式中喚醒……活動 CPU 比空閒 CPU 對 ping 請求的響應更快。(除非您啟動一個實時核心,該核心針對響應時間進行了優化)。

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