1. 程式人生 > >多隊列網卡介紹

多隊列網卡介紹

網卡中斷 發現 init inter irq 數據傳輸 ffi 查詢 部分

1) 簡介

多隊列網卡是指一個網卡上有多個隊列,內核會給每個隊列註冊一個中斷號,具體可以在/proc/interrupts | grep {網卡} 查看,其中第一列是中斷號,最後一列是網卡隊列信息。CPU和中斷號有親和性,一般網卡中斷和一個CPU綁定,綁定關系可以在/proc/irq/{中斷號}/smp_affinity_list查看。

2) 疑惑

網卡與內存數據傳輸有兩種方式,一種是DMA,一種是IRQ。DMA是指有個DMAC(DMA控制器)負責將網卡數據放到指定buffer上,然後CPU在空閑時去處理這部分信息。IRQ是指網卡通過中斷提醒CPU可操作,然後CPU進行讀寫。

這裏我有疑問,網上有人說網卡上的隊列就是所謂的DMA的緩沖區,那麽就是說IRQ和DMA是同時應用在網卡上的。但我又看到一種說法是, DMA是不需要中斷的,一般是CPU有空就去處理。具體是哪種我也不清楚。

在測試時,通過查詢CPU處理中斷的次數,可以發現中斷次數和發包數不一致,所以應該是一次中斷處理了多個包。

多隊列網卡介紹