2014-09-05 110 views
3

主要區別是什麼?「中斷合併」和「Nagle算法」有什麼區別?

  1. Interrupt coalescing (ethtool -C eth1 rx-usecs 0) - 聚結接收分組從不同連接,即增加bandwitdh,但增加的等待時間接收

  2. Nagle algorithm (socket options = TCP_NODELAY) - 聚結發送分組從相同的連接,即增加bandwitdh,但增加發送的等待時間

+0

他們有什麼共同點?想不出任何事情。完全不相關。 – usr 2014-09-06 23:24:42

+0

@usr他們有什麼共同點?它們都通過合併操作/數據包來提高性能。有什麼不同?首先合併接收操作(TCP和UDP),但第二次合併發送操作(僅限TCP)。 – Alex 2014-09-12 11:55:40

回答

3

中斷合併涉及網絡驅動程序:其思想是避免每次出現網絡數據包時重新調用中斷處理程序。相反,在接收到一個數據包之後,NIC等待直到接收到M個數據包,或者在產生中斷之前經過N微秒。然後驅動程序可以一次處理多個數據包。 (否則,在現代千兆和萬兆適配器的情況下,處理器每秒需要處理數十萬甚至數百萬箇中斷,這可能會阻止系統完成其他任務。)正如您的鏈接指出的那樣, (或至少可能)額外等待時間的成本,因爲OS在最早的可能時刻不開始處理接收的分組。

Nagle的算法着重於減少通過合併來自多個數據包的有效載荷數據而發送的數據包的數量號碼。典型的例子是一個telnet會話。如果沒有Nagle,每次按下某個鍵時,系統都必須創建一個新的數據包(以太網上最少64個字節)才能發送一個字節。

因此中斷合併的目的是爲了支持更大帶寬利用率,同時Nagle算法的目的實際上是產生更低的帶寬(通過發送更少的數據包)。

+0

您的意思是,Nagle的算法實際上是在NIC上產生更小的數據流,但實際用戶數據的帶寬(吞吐量 - 最大可能數據速率**)增加了? – Alex 2014-09-06 19:46:14

+0

是的。我正是這個意思。更少的數據:更多可用於其他的東西。帶寬並不是真正適合這一切的正確術語。例如,如果用10G鏈路替換1G鏈路,帶寬只會增加。 ;) – 2014-09-18 15:06:34

+0

是的,但測量帶寬的工具(sockperf,netperf,iperf)顯示**帶寬的增長** :) – Alex 2014-09-18 15:51:12

相關問題