Networking

我可以預期的最小千兆乙太網延遲是多少?

  • September 18, 2017

我有 2 台伺服器坐在執行 Ubuntu 16.04 的機架上,它們之間有一根 1 米長的乙太網電纜,它們都有標準的英特爾乙太網適配器。

兩者ping之間的時間約為300 us(微秒)。

這是我在大多數千兆乙太網設置中看到的標準延遲。

但與理論極限相比,這種延遲似乎仍然很高;為什麼?我讀過 1 GbE 可以實現 40 us 延遲。

這是我可以預期的最小延遲,還是我可以執行軟體調整來減少這種延遲?瓶頸是什麼?是Linux嗎?在這個適用於 Windows 的遊戲玩家網站上,螢幕截圖中的工具在大多數情況下似乎建議 40 us 延遲,但這對我的 Linux 伺服器沒有多大幫助。

(如何)我可以讓我的ping40 我們?

**編輯:**再次查看螢幕截圖,可能顯示的 40 us 實際上不是往返時間,但它實際上是 Windows 核心中的特定延遲,因此 40 us 可能只是總往返時間的一部分,這可能更高,未列出。這也與此處的答案一致。

(我最初在 superuser 提出了這個問題;此時我不清楚 ServerFault 是否是一個更適合提出網路性能問題的社區,而且我在那裡沒有足夠的聲譽來提出這個問題,所以我提出了在這裡。我也將硬體切換到伺服器硬體。)

Aping不測量延遲,也不測量往返時間。它測量 ICMP 回應要求響應時間。ICMP 消息以低優先級執行,並且比嚴重流量花費的時間更長。

正如@barbequesauce 所指出的,雙絞線需要一些複雜的編碼,因此 1000BASE-T NIC 的編解碼器每側至少需要 10 µs(加上系統匯流排和 IRQ 延遲)。雙絞線 cat.6 的速度因子為 65%(~200,000 km/s),因此每 10 m 增加 0.05 µs 或 50 ns。光纖並不是真的更快(VF 為 67%),但使用更簡單的編碼,每邊可能 5 µs 而不是 10 µs。

IP 堆棧將為您的延遲預算增加更多 µs。在快速系統上,您可能會在 20 µs 左右的時間內僥倖逃脫。

當然,NIC、系統匯流排和 IP 堆棧的確切值取決於您的硬體和軟體。上面的數字和你能得到的一樣好。並且不要ping用來測量。

簡而言之,你肯定沒有真正的問題,問題在於解釋ping輸出。

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