вторник, 3 августа 2010 г.

Linux-2.6.35 + bfq в Debian/Ubuntu


После вышедшего накануне стабильного релиза Ядра linux-2.6.35 решил собрать его с экспериментальным I/O планировщиком bfq не включенном на данный момент в официальную поставку ядра. Почему именно bfq? Все дело в том что моей железке свойственна плохая отзывчивость во время активного обращения фоновых процессов к диску. Отчасти в этом виноват знаменитый io-wait-bug расположившийся под номером 12309 в bugzilla. Сам же планировщик  BFQ (Budget Fair Queueing I/O Scheduler) создан на основе CFQ (Completly Fair Queueing I/O Scheduler ), но в отличии от него более честно разделяет  I/O между процессами. Итак, скачиваем исходники ядра с kernel.org и распаковываем в директорию /usr/src. (Так же нужно будет скопировать config-версия установленного-ядра из каталога /boot в исходники ядра) Так-же сливаем три патча отсюда и сохраняем опять-же в /usr/src/
Ставим необходимые для компиляции пакеты:
$ sudo apt-get install kernel-package  libncurses5-dev
debhelper fakeroot
Логинимся рутом (при использовании sudo даётся команда sudo -s -H) и переходим в директорию с распакованным архивом ядра:


# cd ~/usr/src/linux-2.6.35


 Ставим поочередно все три патча:


# patch -p1 < /usr/src/имя/версия_патча.patch


Запускаем make nconfig, идем по-адресу Enable the block layer >IO Shedulers (здесть включаем опцию BFQ I/O Sheduler, затем идем дальше в пункт Default I/O Sheduler и выбираем его по-умолчанию.
сохраняем изменения, выходим и даем завершающие команды:


# make-kpkg clean   (нужно чтобы задать будет задать собственную нумерацию сборок ядра и уничтожить все следы предыдущих версий)
# fakeroot make-kpkg --initrd --revision=mybuild.1.0 kernel_image kernel_headers  ( собственно, сборка ядра и заголовков)


Примечание: в некоторых случаях после окончания сборки необходимо выполнить команды update-initramfs -c -k вставить_сюда_версию_собранного_ядра, затем sudo update-grub


Ну вот и все. После окончания компиляции можно запускать ядро с новым I/Oпланировщиком/ Помог ли он мне полностью избавиться от iowait-бага? Нет. Но отзывчивость системы улучшил заметно. Например полностью исчезли притормаживания при работе с виртуалками и другими жадными на I/O задачами. Так что лично для меня эта игра стоила свеч.

Комментариев нет:

Отправить комментарий