[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Use BFQ IO scheduler

Budget Fair Queueing (BFQ) Storage-I/O Scheduler

  • Why do I want BFQ? -Seems to speed up disk based IO see the Source section for more info.

http://algo.ing.unimo.it/people/paolo/disk_sched/

  • First collect your existing kernel configuration.
    zcat /proc/config.gz > BFQ_CONFIG
  • Next prepare your BFQ_CONFIG file (use vi or nano etc). I like to locate “CONFIG_DEFAULT_CFQ” section and make it look like below. Be careful not to have duplicate lines. I'm thinking there is a better way maybe someone could point it out. Basically add the two lines about BFQ change the existing CONFIG_DEFAULT_CFQ to “is not set” and add “CONFIG_DEFAULT_BFQ=y':
    CONFIG_IOSCHED_BFQ=y
    CONFIG_CGROUP_BFQIO=y
    # CONFIG_DEFAULT_DEADLINE is not set
    # CONFIG_DEFAULT_CFQ is not set
    CONFIG_DEFAULT_BFQ=y
You may not need to manually edit the BFQ_CONFIG. I noticed make oldconfig will prompt you about the patches added.
  • Now grab the code: (I'm using 3.14 in this sample as Slackware-current is currently using 3.14.18)
    VERSION=3.14.0-v7r6 # the version you want
    wget -nd --no-parent --level 1 -r -R "*.html*" --reject $VERSION \
        http://algo.ing.unimo.it/people/paolo/disk_sched/patches/$VERSION
  • Now copy your config file to /usr/src/linux and rename it to .config
    Example: (assuming the config you created above is in your home directory)
    cp $HOME/BFQ_CONFIG /usr/src/linux/.config
  • Next copy these files to /usr/src/linux and then patch (you'll want 0001 to 0003).
    cp ./000* /usr/src/linux;cd /usr/src/linux
    patch -p1 < 0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r6-3.14.patch 
    patch -p1 < 0002-block-introduce-the-BFQ-v7r6-I-O-sched-for-3.14.patch 
    patch -p1 < 0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r6-for-3.14.0.patch
  • cd /usr/src/linux ;make oldconfig ;make -j4 && make modules_install
  • copy bzImage and System.map to boot folder
  • add lilo entry and update lilo.

Sources

 howtos:hardware:bfq_io_scheduler ()