2011-01-16

BFS+BFQ+config_hz=10000+PAE

Photobucket

很多人都想在自己的linux上編譯高效能的核心
但如果只是下載源碼並重新編,那提升的效果是有限的
我修改了AUR上kernel26-ckconfig文件
將其改為config_hz為10000,I/O調度管理器為BFQ(CFQ可選)
經過高度優化的linux核心,我可以在多線make的壓力下
輕鬆的使用我的電腦做其它工作,不會像以前一樣
因為CPU被資源被強佔,造成其餘工作所分配到的資源不足
對流暢性有所影響!



首先必須先下載幾個檔案
linux kernel 2.6.37

BFS Patch:
for 2.6.37

BFQ Patch
for 2.6.37-001
for 2.6.37-002
for 2.6.37-003

config file:
config for 32bit
config for 64bit



依序將patch打上:
patch -Np1 patch-2.6.37-ck1
patch -Np1 0001-bfq_iosched-block-prepare_IO_context_code-v1-2.6.37.patch
patch -Np1 0002-bfq_iosched-block-add-cgroups-kconfig-and-build-bits-for-BFQ-v1-2.6.37.patch
patch -Np1 0003-bfq_iosched-block-introduce_BFQ-v1-2.6.37.patch



如果你使用Debian係的Linux發行版
可以用kernel-package幫助編譯及打包

sudo make-kpkg clean
sudo make mrproper
cp /boot/config-`uname -r` ./.config #如果需要本身的config的話
CONCURRENCY_LEVEL=4 fakeroot make-kpkg --initrd --append-to-version=-bfq kernel_image kernel_headers
sudo dpkg -i linux-image-2.6.3*.deb ; sudo dpkg -i linux-headers-2.6.3*.deb
sudo dpkg -i linux-image-2.6.3*.deb ; sudo dpkg -i linux-headers-2.6.3*.deb



如果不想用我改的config你也可以用自己的config
並在其內中加入以下兩段

#IO Schedulers
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_CFQ_GROUP_IOSCHED=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
CONFIG_DEFAULT_BFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_PREEMPT_NOTIFIERS=y
CONFIG_PADATA=y


#Config_HZ
CONFIG_HZ_10000=y
CONFIG_HZ=1500

到這裡,基本上你已經打造了一個高性能低延遲耐壓的linux核心

6 則留言:

  1. 想請問在Ubuntu 10.04上改會有穩定度的問題嗎?
    我記得DESKTOP版CONFIG_HZ好像是1000的樣子,
    為啥他們要設這麼低?

    回覆刪除
  2. Linux的特性之一就是開放,任何人都可以修改
    發行版商的只能算是通用核心
    針對個人,可以自己優化自己的核心
    我之前用Ubuntu的時候通用核心是300
    RealTime核心是1500
    我自己是設到10000

    這個值太高會影響筆記型電腦的電池壽命
    也許原本可以用個5個小時,但改了之後
    可能只剩四個半小時
    理論上這個值不影響穩定性

    回覆刪除
  3. Powertop網站上的建議是使用NoHZ,這是為了省電的考量。可以麻煩說明一下BFQ sheduler的優缺點嗎?謝謝!

    回覆刪除
  4. kernel 2.6有四種IO Schedulers,其中預設就是CFQ
    CFQ的主要作用是公平的分配I/O資源給每個應用程式
    一般來說較適用於桌面環境

    而BFQ它是基於CFQ的代碼,並改進了演算法
    實際調度效果略優於CFQ
    一般來說CFQ會接受BFQ的反饋
    新版kernel的CFQ都會接納BFQ的反饋
    並且作為預設IO Schedulers
    意思是如果你不特別去修改
    你現在用的CFQ就是由BFQ反饋加強後的CFQ

    缺點的話,BFQ兩年前發展初期bug不少
    但直到去年開始,已經很穩定了
    -而Gentoo的核心一年前開始預設就是BFQ

    回覆刪除
  5. 這兩天才開始接觸ArchLinux, 看到您這篇介紹真是令人蠻興奮的, 請問上面BFQ Patch的連結已經失效,哪裡還可以下載的到呢!
    Thanks~

    回覆刪除
  6. Point
    http://algo.ing.unimo.it/people/paolo/disk_sched/patches/2.6.37/

    回覆刪除