作者 主題: CPU負載不平衡  (閱讀 28166 次)

0 會員 與 1 訪客 正在閱讀本文。

廉價勞工

  • 活潑的大學生
  • ***
  • 文章數: 213
    • 檢視個人資料
CPU負載不平衡
« 於: 2008-11-27 17:40 »
發生好幾次 , 跑個程式讓外面電腦進來做資料交換 , 跑的時候整個速度變很慢
用top看一下發現loading都在 cpu 0 上 (環境是4核心*2 , cpu有0~7)
然後查了一下原因 cat /proc/interrupts 後如下
代碼: [選擇]
           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7       
  0:   11545582   36998535   37138639   37138472   37138613   37137324   37128604   37128505    IO-APIC-edge  timer
  8:         16        267        273        182        125        301        205        363    IO-APIC-edge  rtc
  9:          0          0          0          0          0          0          0          0   IO-APIC-level  acpi
 14:         19       3414    1089547       1101     659416       3520         24     660679    IO-APIC-edge  ide0
 74:          0          0          0          0          0          0          0          0   IO-APIC-level  uhci_hcd:usb1, uhci_hcd:usb3, ehci_hcd:usb4
 82:          0          0          0          0          0          0          0          0   IO-APIC-level  uhci_hcd:usb2
106:    4518023          0          0          0          0          0          0          0         PCI-MSI  eth0
114:  184896191          0          0          0          0          0          0          0         PCI-MSI  eth1
169:       2883      83712     583107     960988     598394    1377973       8029     137693   IO-APIC-level  aacraid
NMI:          0          0          0          0          0          0          0          0
LOC:  271323598  271323598  271349232  271349231  271349469  271349468  271353042  271353040
ERR:          0
MIS:          0


發現是因為eth0跟eth1都是cpu0在處理,而不像其他是共同負載
請問此種問題有何種解決方式?   

kernel為2.6.18-8.el5
irqbalance 有啟動
錢少、事多、離家遠…
位低、權輕、責任重…

日京三子

  • 全區板主
  • 俺是博士!
  • *****
  • 文章數: 8831
    • 檢視個人資料
    • http://www.24online.cjb.net
回覆: CPU負載不平衡
« 回覆 #1 於: 2008-11-28 07:18 »
主機板 與 處理器 分別是?
哈克不愛的多合一輸入平台----->新香草口味
過去的時間不斷流逝,抹去的眼淚已成追憶;
乾枯的雙手無力阻止,再會了我遠去的曾經。

廉價勞工

  • 活潑的大學生
  • ***
  • 文章數: 213
    • 檢視個人資料
回覆: CPU負載不平衡
« 回覆 #2 於: 2008-11-28 09:11 »
主機板為  IBM 8853C2U
處理器為  Intel(R) Xeon(R) CPU  X5355  @ 2.66GHz

此機器為 BladeCenter HS21
錢少、事多、離家遠…
位低、權輕、責任重…

日京三子

  • 全區板主
  • 俺是博士!
  • *****
  • 文章數: 8831
    • 檢視個人資料
    • http://www.24online.cjb.net
回覆: CPU負載不平衡
« 回覆 #3 於: 2008-11-28 10:07 »
這程式會不會是單線程的程式?  程式在編譯時有針對多核心做設定與處理嘛?
哈克不愛的多合一輸入平台----->新香草口味
過去的時間不斷流逝,抹去的眼淚已成追憶;
乾枯的雙手無力阻止,再會了我遠去的曾經。

廉價勞工

  • 活潑的大學生
  • ***
  • 文章數: 213
    • 檢視個人資料
回覆: CPU負載不平衡
« 回覆 #4 於: 2008-11-28 10:27 »
沒有,不只跑程式的時候
只要是跟網路傳輸有關的動作(例如傳送檔案)
都是只有cpu0在做處理動作
所以在eth0跟eth1的欄位,cpu1~7都是掛0

錢少、事多、離家遠…
位低、權輕、責任重…

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5416
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
回覆: CPU負載不平衡
« 回覆 #5 於: 2008-11-28 10:46 »
ethx 那樣子算正常的吧, 我碰過的機器都是這個樣子.
不過並非都是同一個 cpu 處理, 不同的介面有可能是不同的 cpu 處理, 不過就 /proc/interrupts 的內容來看, 同一個介面是永遠使用同一個 cpu 在處理.

如果要更改這個, 請看一下 kernel 的 Documentation/IRQ-affinity.txt 的內容, 有說明要怎麼改.

網路慢? 查一下網路或 IO 相關的問題可能性比較大一些.
« 上次編輯: 2008-11-28 10:51 由 twu2 »

廉價勞工

  • 活潑的大學生
  • ***
  • 文章數: 213
    • 檢視個人資料
回覆: CPU負載不平衡
« 回覆 #6 於: 2008-11-28 11:32 »
之前已改過smp_affinity作測試
只是不管改成f0或者0f , 還是都只有CPU0在動作

平時還好,連線數一多,cpu0 loading甚至跑上100%
網路流量是正常,就是機器處理不過來,嚴重一點甚至crash必須重開

用其他幾台也做了測試,好像只有HS21的會有這種情形
用另一台HS20的看就還蠻正常

193:  167393904         103814896   IO-APIC-level  eth0
201:  132481412         100143242   IO-APIC-level  eth1

是否跟 PCI-MSI 與 IO-APIC-level 不同有關呢?
錢少、事多、離家遠…
位低、權輕、責任重…

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5416
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
回覆: CPU負載不平衡
« 回覆 #7 於: 2008-11-28 12:00 »
MSI 的機制與傳統的方式不同, 如果你認為是 MSI 的問題, 可以在開機的參數中加上 pci=nomsi 試看看, 不要使用 MSI 看看你的問題是否仍會存在吧.

cmwang

  • 活潑的大學生
  • ***
  • 文章數: 328
    • 檢視個人資料
回覆: CPU負載不平衡
« 回覆 #8 於: 2008-11-28 13:11 »
不知道IRQ affinity和Enable kernel irq balancing間有啥關連或差別啊 ??? ???....
不要,不要,我不要這種顏色的帽子 ;D ;D....

廉價勞工

  • 活潑的大學生
  • ***
  • 文章數: 213
    • 檢視個人資料
回覆: CPU負載不平衡
« 回覆 #9 於: 2008-11-28 13:52 »
感謝各位的回覆 , 目前已測試成功 , 跟大家分享完整修改過程

的確是因為MSI的影響關係
加上pci=nomsi開機後
eth0跟eth1由PCI-MSI改變為IO-APIC-level
此時smp_affinity參數還是只有指向其中一顆CPU
#cat smp_affinity  結果為 00000002  <=由CPU1工作
這時改smp_affinity參數已可有作用 (PCI-MSI時怎麼改都沒反應)
#echo ff > smp_affinity       
此處CPU分配為HEX , 1=cpu0 , 2=cpu1 , 4=cpu2 , 8=cpu3 後四顆則再進一位
例如我要cpu0跟cpu2兩顆作業,就是#echo 5 > smp_affinity
因我要8顆同時作業故改為 ff
以下為改完後測試結果

代碼: [選擇]
           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7       
  0:     102261      91525     111568     107161     101577     101559     101558     101568    IO-APIC-edge  timer
  8:          0          0          0          0          0          0          0          1    IO-APIC-edge  rtc
  9:          1          0          0          0          0          0          0          0   IO-APIC-level  acpi
 14:          0          0          0          0          0          0          0          0    IO-APIC-edge  libata
 15:          0          0          0          0          0          0          0          0    IO-APIC-edge  libata
169:       2308        382        535        344        499        368        370        423   IO-APIC-level  ioc0
177:          7          5          6          8          3         10          3          0   IO-APIC-level  uhci_hcd:usb1
185:          0          0          0          0          0          0          0          0   IO-APIC-level  uhci_hcd:usb2
193:        473          7          3          6          4          6          3          6   IO-APIC-level  uhci_hcd:usb3, eth1
201:        560        145      13251        137       6652        175        178       7125   IO-APIC-level  ehci_hcd:usb4
209:     209132     215021     203399     205638     223642     227333     232260     232366   IO-APIC-level  eth0
NMI:          0          0          0          0          0          0          0          0
LOC:     810637     810656     808624     808629     810475     810474     808474     808473
ERR:          0
MIS:          0


錢少、事多、離家遠…
位低、權輕、責任重…

liteC

  • 憂鬱的高中生
  • ***
  • 文章數: 158
    • 檢視個人資料
    • 軟體
回覆: CPU負載不平衡
« 回覆 #10 於: 2009-12-08 02:15 »
換顆主機板 試試

直覺是主機板的問題
非常謝謝學長們熱心回答我發問的問題
非常感寫 m(_ _)m