中斷合并(InterruptModeration)是現代網卡普遍采用的省CPU技術。網卡不采用每收到一個數據包就觸發一次中斷(這種方式稱為“每包中斷”,在高速網絡下會導致CPU過載),而是等待一定數量的數據包或經過一段超時時間后,才合并觸發一次中斷。這種方式大幅減少了中斷數量,降低了CPU占用率,但也引入了兩個副作用:額外的延遲和延遲抖動。
延遲方面,中斷合并的超時等待會人為增加數據包處理時延。例如,網卡設置超時時間為100微秒,即使只有1個數據包到達,也要等待100微秒才能觸發中斷,然后再由CPU處理。這100微秒的等待時間直接加到了網絡往返時延中。延遲抖動方面,在流量不穩定的情況下,數據包到達的時間間隔隨機變化,導致中斷觸發的時機不一致,從而引起處理時延的波動。對于實時音視頻、工業控制等應用,這種抖動比固定延遲更有害。
不同網卡的中斷合并算法各異。簡單的按數量合并(如每8個包中斷一次)在低流量時依然會因數量不足而超時等待;高級的算法會根據歷史流量動態調整超時閾值,甚至根據數據包的服務質量優先級決定是否立即中斷。此外,Linux內核的ethtool工具允許用戶調整中斷合并參數:rx-frames(收包數量閾值)和rx-usecs(時間閾值)。降低數值可以減少延遲但增加CPU負載;升高數值則相反。

實際運維中,最合適的配置需要結合業務場景測試。數據庫、Web服務器等吞吐敏感型任務適合較高閾值;高頻交易、語音網關等延遲敏感型任務則應降低甚至關閉中斷合并。此外,某些網卡支持基于“絕對時間戳”的中斷,即在收到帶有特定時間敏感標記的報文時繞過合并機制,立即觸發中斷。
光潤通網卡驅動支持通過標準ethtool接口調節中斷合并參數,用戶可根據自身業務靈活配置。光潤通的技術文檔中提供了針對不同應用場景(如文件服務器、實時通信、虛擬化主機)的參數推薦值,幫助用戶在CPU負載和網絡延遲之間取得平衡。了解中斷合并的工作原理,是進行精細化性能調優的前提。