Linux 2.6 Network Performance Tunning Note

前情提要:
某PC-Based 4 Port Gigabit Router被客戶用SmartBit 測出效能低落的問題,PM請我複製問題,於是開始這次的艱困的實驗。

問題描述:
在Linux 2.4可以做出不錯得成績,但是換到Ubuntu 9.04客戶的標準測試系統時,效能只有Linux 2.4的一半,後來在其他Fedora跟Debian重測,效能一樣不好,所以首要目標就是要把Linux 2.6的Network Performance調校到最佳,至少要跟Linux 2.4一樣。

系統環境:
Atom N270 + 82574L x 4

過程:
Google->Make changes->SmartBit Test->Fail->Goto First....

結論:
1 測試結果數字上上下下不穩定:請把cpufreq的模式設定成Performance,固定核心頻率
>>列出可用模式:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
>>強迫跑效能模式:echo "performance" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
2 Intel Driver可以Tune的參數很多,其中最重要的就是IntMode,預設是2,範圍0-2都可以換換看,有沒有不一樣,以我的例子,預設值只能跑出50%(對比於Linux 2.4),改成1,可以跑出75%
3 手動分配IRQ到不同的CPU,總算讓我搾出最後的25%,得到跟Linux 2.4一樣的好成績,方法如下
>>列出所有IRQ:cat /proc/interrupts
>>修改APIC對應:echo 2 > /proc/irq/29/smp_affinity (把IRQ 29 Mapping到CPU 1)
4 網路上很多修改TCP buffer memory的文章,不過在此例沒有顯著的效果,因為Bottleneck在CPU處理IRQ的能力
5 以上方法其實都是事後補救,理論上應該是用預設值就應該是setting free,我猜BIOS要做點功夫,調校一下APIC吧!

參考資料:
分配IRQ中断使用的cpu资源
Intel NIC driver for Linux
CPU frequency scaling in Linux with cpufreq

留言

這個網誌中的熱門文章

RTC & CMOS 技術詳解

[自由網路] 如何取得 Google Drive (真實)外連位址 (Direct Link)