如何將網絡卡中斷繫結到特定cpu

2021-07-08 22:15:37 字數 1260 閱讀 7058

在cpu單核的時代,網絡卡收發包處理都會有乙個cpu負責,但隨著多核cpu的出現,

還按照以前網絡卡中斷有乙個cpu處理的話,明顯浪費cpu資源,基於此出現了網絡卡中斷繫結

特定cpu的技術,目的當然是為了提高cpu利用率,將網絡卡中斷均衡的分配到各個cpu.

首先,簡單說一下中斷,什麼是中斷呢?就是各個硬體裝置(網絡卡,鍵盤滑鼠,磁碟等等)

與cpu的通訊方式,告訴cpu,我這兒有任務要處理,cpu中斷手頭的工作,先去響應硬體;

老實說,中斷處理系統是種比較有效率的做法,linux就是採用的這種方法。

中斷比起輪詢來說好很多,舉個例子,比如乙個人處理手機簡訊,輪詢就是每5分鐘去

檢查一下手機,看看有沒有簡訊;中斷就是手機收到簡訊時,震動或響鈴,提醒你處理簡訊,

是不是中斷更搞笑啊。

接著來說中斷,為了區分不同的硬體,每個硬體有個唯一的中斷號,在linux下可以檢視檔案

第1列就是中斷號,比如網絡卡eth0對應的中斷號為139,中斷號數字越小,說明優先順序越高;

第2,3列表示在各個cpu產生的中斷次數,eth0的中斷總共1480個,都是cpu0處理的;

第4列表示中斷控制器型別;

第5列表示裝置名稱

二、 問題來了,如何將網絡卡中斷繫結到特定cpu呢?

【centos6.5 核心版本2.6.32-431.el6.x86_64,cpu4核】

首先檢視一下,網絡卡對應的中斷號cat /proc/interrupts | grep eth

中斷號18繫結的cpu記錄在檔案/proc/irq/18/smp_affinity

注意:smp_affinity和smp_affinity_list這兩檔案作用是一樣的;

list是10進製,更直觀,如截圖eth1綁到cpu0和cpu2,

smp_affinity是十六進製制形式,5換算成二進位制0101,也表示繫結cpu0和cpu2;

二者是關聯的,修改乙個,另乙個也會跟著變化;

注:irqbalance服務作用是自動繫結cpu與中斷,如果不停止,手動繫結會被覆蓋。

如何將程序 執行緒繫結到固定的CPU核

什麼是cpu affinity affinity 是程序的乙個屬性,這個屬性指明了程序排程器能夠把這個程序排程到哪些 cpu上。在linux 中,我們可以利用 cpu affinity 把乙個或多個程序繫結到乙個或多個 cpu上。cpu affinity分為2 種,soft affinity 和ha...

如何將網域名稱繫結到hexo

1.擁有乙個githubname.github.io可以正常訪問的網域名稱,如我的github部落格 2.購買網域名稱,個人推薦阿里雲,首年年費比較便宜,適合個人折騰,部落格建議com,me,info,pro 專家 mobi kindle電子書的格式 再不濟可以選擇tech,cc之類的,國外可以參考...

如何將陣列型別繫結到DataGridView控制項

datagridview控制項的datasource有以下幾個型別 datagridview 類支援標準的 windows 窗體資料繫結模型。這意味著資料來源可以是實現下列介面之一的任何型別 陣列如果直接繫結到datagridview控制項,會並不見得得到你想要的結果。下面是乙個示例 private...