Пользователь
121,5
рейтинг
7 сентября 2009 в 17:50

Администрирование → Brain Fuck Scheduler — ставим за 5 минут

О новом планировщике задач для Linux на Хабре уже написали вот тут. Весьма эпатажный «трейлер» с xkcd к новому планировщику, и не менее веселый FAQ, пробудили интерес. Расспросил знакомых, кто ставил, чтобы поделились впечатлениями — никто не ставил, ибо «влом ядро новое ставить» или «я подожду, пока оно в мейнстриме появится». Поставил и попробовал сам, и для тех кто хочет сделать то же самое — краткое руководство для Ubuntu 9.04, с описанием потенциальных граблей.

В качестве тизера, скажу лишь, что полноэкранное видео на youtube действительно не тормозит и система стала отзывчивее и шустрее.

Итак, дабы не быть голословным, приступим. Предполагается, что у вас установлена Ubuntu 9.04 (Jaunty).

Ядро


Данный планировщик написан для ядер 2.6.30+, поэтому дефолтное в Jaunty ядро 2.6.28 нам не подходит. Нужно скачать 2.6.30, а лучше последнее на данный момент из ветки — 2.6.30.5.

Скачиваем исходники, заботливо упакованные в .deb разработчиками Ubuntu:
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.30.5/linux-source-2.6.30_2.6.30-02063005_all.deb

Устанавливаем исходники:
sudo dpkg -i linux-source-2.6.30_2.6.30-02063005_all.deb
cd /usr/src
sudo tar xvjf linux-source-2.6.30.tar.bz2


С ядром пока закончили.

Патч BFS


Теперь нужно установить патч BrainFuck Scheduler. Директория с патчем и прочими релевантными файлами находится тут: ck.kolivas.org/patches/bfs
Последняя актуальная версия патча на момент написания 2.0.9 — ck.kolivas.org/patches/bfs/2.6.30-sched-bfs-209.patch

Скачиваем и накладываем патч:
cd /usr/src/linux-source-2.6.30/
sudo wget http://ck.kolivas.org/patches/bfs/2.6.30-sched-bfs-209.patch
sudo patch -p1 < 2.6.30-sched-bfs-209.patch

Патч два раза ругнется на «assume reverse patch» — нужно отвечать «нет», и на «Apply anyway?» — «yes».

Сборка пропатченного ядра


Теперь собираем, как и всегда. Кто не знает, как собираем всегда, краткое введение — в Debian/Ubuntu для сборки ядра существует удобная утилита kernel-package, которая делает за нас тонну работы. Поэтому сначала её ставим, или убеждаемся, что она(и еще несколько необходимых программ) установлена:
sudo apt-get install kernel-package libncurses5-dev fakeroot wget bzip2

Теперь генерируем новую конфигурацию ядра на основе существующей:
sudo cp /boot/config-`uname -r` ./.config
sudo make menuconfig

Тут нам нужно будет сделать парочку изменений.

UPD. Поправочка от coldFlame — эти изменения не обязательны, более того, на ноутбуках не рекомендуются. Из FAQ
THESE ARE OPTIONAL FOR LOWEST LATENCY. YOU DO NOT NEED THESE!
Configure your kernel with 1000Hz, preempt ON and disable dynamic ticks.


  • Processor type and features -> Timer frequency устанавливаем в 1000Hz
  • Processor type and features -> Tickless System (Dynamic Ticks) отключаем
  • Processor type and features -> Preemption Model -> Preemptible kernel (Low latency desktop)

Выходим и сохраняем конфигурацию.

Далее, непосредственно сборка. Про 5 минут в заголовке я, конечно, наврал :), но если этапом сборки пренебречь(смиримся), а скорость скачивания вышеупоминавшихся пакетов пусть стремиться к бесконечности, то в 5 минут мы спокойно уложимся. :)
sudo make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-bfuck kernel_image kernel_headers


Если всё прошло удачно, то в /usr/src/ у вас будут лежать два .deb пакета, с заголовками файлов и непосредственно с ядром и модулями. Устанавливаем их:
sudo dpkg -i /usr/src/*bfuck*.deb

При этом ядро и модули установятся в систему, сгенерируется новый initrd, пересоберутся зависимые внешние модули(кроме nvidia, но об этом ниже) и grub автоматически узнает про новое ядро.

Всё, можно перезагружаться.

Драйвера NVidia


Те драйвера, которые по умолчанию лежат в репозитории — не устанавливаются автоматически на новое ядро, а выдают ошибку. Это сбивает всю прелесть автоматических инсталляционных скриптов и у нас есть два выхода — либо скачать самый свежий инсталляционный бинарник с сайта Nvidia, либо использовать красивый метод с патчем для драйверов.

Итак, скачиваем патч для модуля nvidia:
wget http://lionsimba.lerlan.ru/temp/proc-dir-entry-owner.patch

Копируем его в /usr/src/nvidia-180.44/patches/
sudo cp proc-dir-entry-owner.patch /usr/src/nvidia-180.44/patches/

В файл /usr/src/nvidia-180.44/dkms.conf добавляем следующие строки:
PATCH[1]="proc-dir-entry-owner.patch"
PATCH_MATCH[1]="^2.6.30"


Всё, можно пользоваться всеми прелестями dkms и быть уверенными, что на новом ядре заработают драйвера Nvidia.
UPD. Есть смысл глянуть вот эти комменты.

Заключение


Теперь, что касается впечатлений. Система действительно стала субъективно отзывчивее, убрались малозаметные, но раздражающие паузы при различных действиях. Полноэкранное видео на youtube — подтверждаю :) — действительно не тормозит. Из пока замеченного — практически моментальным стал компизовский Ring Switcher для окон — ранее он оставлял ощущения тяжести и неповоротливости. Делать тесты, бенчмарки и замеры принципиально не буду — мне важнее субъективные ощущения от работы с машиной.

Однозначно пока остаюсь с этим ядром и этим планировщиком.

UPD. Патч версии 2.10 накладывается и на 2.6.31-rc9 (спасибо davnozdu)
divan0 @divan0
карма
128,0
рейтинг 121,5
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

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

Комментарии (120)

  • +6
    Мантейнером не желаете стать?
    Сообщество скажет Вам спасибо!
    • +2
      Мейнтейнером чего именно, блога на Хабре?
      На самом деле — в любом случае, вряд ли: мейнтенер чего либо, это прежде всего ответственность и инициатива, а мне пока этого всего в других местах даже чересчур, да и в интернете, бывает, неделями не появляюсь.
      • 0
        Хотябы мейнтейнером данного руководства — было бы полезно если бы руководство по наложению патча обновлялось по мере выхода новых ядер, уставновил, ухожу в ребут
        • 0
          Ядро то установилось, но проверить как работают полноэкранные флешролики не удалось — из nework manager пропал пункт для актвиации wi-fi сети, разбиратся впадлу, вообще 9.04 надо сносить — микрофон не хочет работать уже весь инет изрыл — ни одно решение не помогло
          • 0
            Проверил по кабелю, действительно на старом ядре полноэкранные ролики дёргаются
  • +3
    так не захотело: sudo patch -p1 << 2.6.30-sched-bfs-209.patch
    так работает: sudo patch -p1 < 2.6.30-sched-bfs-209.patch
    • +2
      Исправил, спасибо — конечно же одинарный '<'.
      • 0
        лучше бы просто sudo patch -p1 -i 2.6.30-sched-bfs-209.patch… нафик тут "<" :)
  • 0
    Не проще ли было сразу скачать сорцы ядра с kernel.org?
    www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.5.tar.bz2
    • +2
      Возможно проще, просто сделал уже так(мало ли, какие патчи мейнтейнеры Ubuntu добавили или ещё чего нибудь — «роднее» будет) и описывал свои шаги, буквально из истории шелла копировал команды.
    • +1
      При таком подходе есть проблема — система может не понять, что вы поставили новое ядро 2.6.30 и постоянно предлагать «обновиться» на 2.6.28. Если собрать пекедж, то эта проблема не должна появиться.
      Поэтому в Убунту лучше пойти стандартным путем, пусть он и чуть дольше — иначе синаптик заи… ет вас ежедневными предложениями обновлений.
      • 0
        kernel-source вообще совсем не обязательный пакет.
        обновления проверяются только на тему kernel-image
        • 0
          Все верно.
          Но у вас в системе будет старый kernel-image, а то что ядро у вас при этом новое, система не допрет.
  • 0
    То-же хочу попробывать, только наложу последнюю версию патча на ядро 2.6.31-rc9

    • 0
      Уже всё готово, патч BFS-210 наложился без проблем.
      Пока что полёт нормальный.
      OS Gentoo
      • +1
        Спасибо, добавил в апдейт инфу.
      • 0
        Наложил на работе и дома на tuxonice-sources-2.6.30-r5. На работе всё ок, а дома ругается «INFO: task pdflush4:3882 blocked for more than 120 seconds» в syslog. Имя таска может быть разное. При этом таск похоже становиться зомби и не освобождает занятые ресурсы(разделы память, но память особо при этом не жрёт). Вот накропал на коленке ебилд tuxonice 2.6.31, вечером попробую дома свежий bfs.
    • +1
      а других вариантов уже и нет — патч указанный в статье уже отсутствует, кстати…
      • 0
        он в директории «old»
  • +1
    Поставил собираться, посмотрим что получится :)
    Пара замечаний:
    1. fakeroot запустился только вместе с sudo
    2. Нужные настройки ядра находятся в Processor type and features, а не в General Setup
    • +2
      fakeroot нужен как раз для того, чтобы не использовать sudo
      • +2
        а случаем не было ничего вроде sudo chown -R %username% /usr/src
        или там смены прав на 777?
        а то откуда у фэйкрута права на запись в /usr/src?
        • 0
          777 не поможет, вообще изначально не обязательно было проводить все операции в /usr/src, можно было в домашнем каталоге.
          Тогда бы root понадобился только при установке пакета.
    • +1
      1. да, у меня только из под рута заработало
  • 0
    * General Setup -> Timer clock устанавливаем в 1000Hz
    * General Setup -> Dynamic ticks отключаем

    Таких опций в указанном разделе нет.
    Есть опция «Timer frequency» в разделе «Processor type and features». Не совсем понятно, что автор имел в виду.
    • 0
      Да, спасибо — это мой фак, я удалил дерево билда после сборки, ибо закончилось место, и восстанавливал по памяти. Собственно, надеялся, что поправят в комментах, если что.
      Исправил.
  • 0
    не вижу General Setup -> Timer clock… где оно???
    • 0
      нашел:
      Processor type and features
      — Tickless System (Dynamic Ticks) = off
      — Preemption Model
      — Preemptible kernel (Low latency desktop)
      — Timer frequency 1000Hz
      • 0
        * Preemptible внутри Preemption
      • 0
        Спасибо большое — по памяти восстанавливал, исправил уже.
  • 0
    О да, generic-ядро вы за пять минут не соберете. Скорее за сорок пять.
    • +2
      Ну написал же честно в тексте — «про 5 минут я соврал» :)
    • 0
      Кросс-компиляция не мейнфрейме? :)
      Или хотя бы офисном сервере :)
  • 0
    автор шедулера пишет о возможном баге — не работает suspend. как у вас?
    • 0
      Не знаю — пока только на рабочем desktop'е пользовал, на котором средний аптайм исчисляется неделями, и суспенд там отродясь не жил. На днях поставлю на ноуте — проверю.
      Если будет положительный/отрицательный опыт — отпишитесь, тоже интересно.
    • 0
      У меня на лептопе (Asus F6E) не работает s2disk — виснет после пробуждения. s2ram работает прекрасно.
  • 0
    Examining /etc/kernel/postinst.d.
    run-parts: executing /etc/kernel/postinst.d/dkms
    run-parts: executing /etc/kernel/postinst.d/nvidia-common
    run-parts: /etc/kernel/postinst.d/nvidia-common exited with return code 20
    Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-2.6.30.5-bfuck.postinst line 1186.
    dpkg: не удалось обработать параметр linux-image-2.6.30.5-bfuck (--configure):
     подпроцесс post-installation script возвратил код ошибки 2
    При обработке следующих пакетов произошли ошибки:
     linux-image-2.6.30.5-bfuck
    E: Sub-process /usr/bin/dpkg returned an error code (1)
    


    Вот такое выдаёт. Операции с патчем драйвера провёл.
    • 0
      Вот это интересно, спасибо. У меня было тоже самое, после чего, собственно и началось разбирательство с nvidia. Сначала переместил скрипты $(find /etc/kernel/ -name "*nvidia*") во временную папку, установил ядро без них, а уже потом на новом ядре докопался до сути проблемы, скачал патч и пересобрал модули, сделав dpkg-reconfigure nvidia-180-kernel-source(кажется так, могу ошибаться — сейчас с домашнего лэптопа пишу), и вернул скрипты на место.
      Но это, конечно, не выход — надо будет заново процесс пройти, найти применимое для гладкой сборки решение. Если найдете раньше — поделитесь!
      • 0
        $ sudo dpkg-reconfigure nvidia-180-kernel-source 
        Removing all DKMS Modules
        Done.
        Removing all DKMS Modules
        Done.
        Adding Module to DKMS build system
        driver version= 180.44
        Doing initial module build
        
        Error! Bad return status for module build on kernel: 2.6.30-bfuck (x86_64)
        Consult the make.log in the build directory
        /var/lib/dkms/nvidia/180.44/build/ for more information.
        Installing initial module
        
        Error! Could not locate nvidia.ko for module nvidia in the DKMS tree.
        You must run a dkms build for kernel 2.6.30-bfuck (x86_64) first.
        Done.
        

        В логе смотрим:

        *** Unable to determine the target kernel version. ***
        
        make: *** [select_makefile] Ошибка 1
        

        dpkg -l | grep bfuc
        ii  linux-headers-2.6.30-bfuck                 2.6.30-bfuck-10.00.Custom                Header files related to Linux kernel, specifically,
        iF  linux-image-2.6.30-bfuck                   2.6.30-bfuck-10.00.Custom                Linux kernel binary image for version 2.6.30-bfuck
        • +1
          В общем всё оказалось довольно просто.
          Почему-то в /lib/modules/2.6.30-bfuck симлинк 'build' указывал на /usr/src/linux-2.6.30 (который был уже подчищен), а не на /usr/src/linux-headers-2.6.30-bfuck

          Лечится так:
          cd /lib/modules/2.6.30-bfuck
          rm build
          ln -s /usr/src/linux-headers-2.6.30-bfuck build


          Модуль успешно собрался с патчем, описанным в статье.
          • +2
            Отлично, спасибо!
            Я так предполагаю, следующая команда сделает тоже самое:
            sudo ln -sf /usr/src/linux-headers-2.6.30-bfuck /lib/modules/2.6.30-bfuck/build
            • 0
              Странно, что хотя драйвер и заработал, постинсталляционная настройка .deb пакета ядра обламывается с той же ошибкой, что и в первом моём сообщении этого треда.
              • 0
                И ещё очень странный размерчик вышел, уж не знаю с чем связано, надеюсь я ядро без дебага собрал о_О

                -rw-r--r-- 1 root src 5,8M 2009-09-08 01:01 linux-headers-2.6.30-bfuck_2.6.30-bfuck-10.00.Custom_amd64.deb
                -rw-r--r-- 1 root src 278M 2009-09-08 01:00 linux-image-2.6.30-bfuck_2.6.30-bfuck-10.00.Custom_amd64.deb
                

                278 Мег!!!
                • 0
                  В пакете еще есть куча модулей.
                  • 0
                    24M 2009-08-19 09:05 linux-image-2.6.28-15-generic_2.6.28-15.49_amd64.deb

                    Примерно столько весит дистрибутивное ядро.

                    Я очень удивился, когда при сборке на стадии архивации она пыхтела 10 минут.
                    Собирая способом, описанным в статье, ядра в Debian я никогда подобной ситуации не встречал.
                    • 0
                      Извините за неправильную информацию, я вообще вручную собираю ядро.
                      • 0
                        Тогда расскажите, как вы отключаете систему обновления для ядра? А то я один раз собрал, и теперь она вместе с прочими обновлениями настойчиво предлагает мне старое новое ядро.
                        • 0
                          У меня Gentoo, там нет системы обновления для ядра.
                          • 0
                            Тогда ок. А то мне сейчас пришлось удалять из этой системы старые ядра. Сейчас посмотрим, что там наудалялось. Вобщем, если через 5 минут не вылезу в инет, то считайте, что я криво удалил ядра :)
                            • 0
                              Вы, конечно, извините, но не могли бы Вы поскорее назвать дистрибутив, чтобы я никогда не думал о нём. Спасибо.
                              • 0
                                По иронии судьбы лого этого дистрибутива — у вас на аватаре :)
                                На самом деле, автообновление ядра — это умно. Это удобно для тех пользователей, кто не хочет заморачиваться с ядром и при этом иметь нормальное обновляемое ядро. Я сам какое-то время работал на этом ядре и автоматически его обновлял. До тех пор пока мне не захотелось другого. Тогда это начало мешать. Но проблема решается просто — надо просто тем же самым пакетным менеджером удалить ненужно ядро.
                                То есть пользователю легко сделать выбор: либо автопилот либо ручная сборка — кому как удобнее.
                                • 0
                                  Согласен, что удобно, но это хорошо только тогда, когда можно отключить. Разумеется, я предполагаю, что Вы предприняли все возможности для установления этого печального факта.
                                  • 0
                                    Это в разных дистрах по-разному: в Федоре можно просто указать какие пакеты не обновлять, здесь я удалил пакет и поставил свой. В последнем случае, кстати, система поступит правильно, когда предложит мне обновиться на более новую версию 2.6.32 — т.е. более новую чем моя.
          • 0
            после какого шага нужно выполнять эти команды? перед sudo make-kpkg clean
            fakeroot make-kpkg --initrd --append-to-version=-bfuck kernel_image kernel_headers?
            • 0
              После установки пакета. Перед сборкой модулей… Ну то есть в первый раз оно не соберет модули, потом нужно выполнить команды и собрать модули ещё раз.
    • 0
      Arceny, точно такое же выдало и мне. Ставил на ноут, но видюха у меня не NVidia.
      каммент habrahabr.ru/blogs/ubuntu/68946/#comment_1959817 все исправил
      Спасибо
  • +2
    А можно вот выложить собранное под Ubuntu 9.04 пропатченное ядро? Для меня наложить патч не составляет сложностей, но вот лень-матушку не поборю ;) Думаю многие сказали бы спасибо за пакеты…
    • +3
      Ну, теоретически можно, правда я немного по старой памяти прошелся по конфигу и заточил под себя ядро, но если сильно много лентяев(в самом хорошем смысле этого слова))) действительно скажут спасибо — можно будет и с дефолтным конфигом выложить.
      • 0
        если соберется и загружусь — выложу :)
        • 0
          Сообщите о размере пакета, который получится ;-)
          • 0
            как-то оно не ужилось с интеловской графикой, перекрасило монитор в психоделичные цвета и зависло.
            пакет 333 метра. могу выложить, тем не менее.
            • 0
              UPD: бодро запустилось без UXA акселлерации, радостно демонстрирует слайдшоу.
              короче, для счастливыз владельцев GL960 эго пока пилить и пилить. кстати, 31rc9 демонстрирует большой прирост производительности.
            • 0
              Чтобы пакет был нормального размера в menuconfig надо выставить Compile the kernel with debug info в значении Off. Тут подробнее это обсуждалось.
              • 0
                Угу, а еще желательно делать билд в /tmp, как нормальные люди, а то sudo fakeroot выглядит как-то плохо.

                Ладно, не в этом дело. С 960GL увы, оно не дружит, в отличии от 31, котороев дефолтных настройках бегает заметно шустрее.
    • +1
      Кстати, а его никто не собирал? Может у кого-то из мейнтейнеров убунты уже собрано и установлено и закинуто в свой репозиторий? Нужно будет только прописать добавить в репы.

      Автор сделал большое дело по тестированию, сборке и описанию всего процесса. Но не можем же мы его напрягать постоянной поддержкой и обновлением этого ядра.
  • +1
    Собрал, попробовал… фуллскрин ютуб все так же тормозит, зато теперь софт компилируется в 4 потока на 4 ядрах быстрее, чем раньше в 8. Чудо, но 4 потока дают честную 100% загрузку 4 ядер, уже повод остаться на этом планировщике.
    • 0
      Я тоже не заметил никаких изменений на Youtube.
      А вот с компиляцией не всё было так гладко — при сборке eiskaltdc (DC++-клиента) компиляция просто стала. То есть никаких ошибок, процессор по нулям, винчестер не загружен — просто стоит и ждёт чего-то. Даже перезагрузка не помогла (да, я знаю что это не linux-way). Лишь после сборки «обычного» ядра компиляция стала проходить моментально, без подобного «зависания».
      Так что пока, пожалуй, подожду. Тем более что патч постоянно допиливается, чуть ли не ежедневно новые версии выходят.
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Собралось, пока что полет нормальный кроме одной вещи: перестал запускаться chromium:
      chromium-browser
      [21974:21974:1083524369:FATAL:/build/buildd/chromium-browser-4.0.207.0~svn20090907r25598/build-tree/src/chrome/browser/renderer_host/browser_render_process_host.cc(791)] Check failed: peer_pid == process_.pid(). 21994 3
      Trace/breakpoint trap

      Буду откатываться.
      • 0
        PS: Linux kmtz-laptop 2.6.31-rc9-bfuck #1 SMP PREEMPT Tue Sep 8 13:38:40 SAKST 2009 x86_64 GNU/Linux
        может быть с 2.6.30 будет нормально, надо попробовать.
        • 0
          На тридцатом так же.
        • 0
          Собрал ядро на основе 2.6.31 с 211 патчем — та же самая фигня.
          ~$ uname -a
          Linux e-laptop 2.6.31-bfs211-bfuck #1 SMP PREEMPT Fri Sep 11 17:45:47 MSD 2009 i686 GNU/Linux

          ~$ chromium-browser
          [7775:7775:2803070356:FATAL:/build/buildd/chromium-browser-4.0.207.0~svn20090908r25615/build-tree/src/chrome/browser/renderer_host/browser_render_process_host.cc(791)] Check failed: peer_pid == process_.pid(). 7794 3

          Судя по всему проблема в несовместимости шедулера и хрома: code.google.com/p/chromium/issues/detail?id=21112

          P.S. Все же Brain Fuck Scheduler не зря так назвали :)
          • 0
            Отлично! Хромиум работает с BFS!

            Для этого надо переименовать файл /usr/lib/chromium-browser/chromium-browser-sandbox в /usr/lib/chromium-browser/chromium-browser-sandbox.disable
            Подробнее тут: code.google.com/p/chromium/issues/detail?id=21112#c12

            Я надеюсь, разработчики хрома внесут изменения, чтобы следующие версии работали нормально без такого шаманства.
      • 0
  • 0
    Супер. Большой сэнкс.
    Визуально система стала работать быстрее.
    Раньше больше всего меня рубил компизовский свитчер, тебе работает нормально.
  • +2
    Кстати, по поводу «система работает отзывчивее» — надо еще понять, кто в этом больше виноват, BFS или ядро 2.6.30, сейчас чистое поставлю, сравню с .28
    • 0
      Да, будет интересно узнать настоящую причину.
  • +1
    У меня с BFS вываливались некоторые процессы в D-state, с ютубом ничего не изменилось, да и вообще разницы на глаз никакой. Т.о. про сей патч можно смело забыть.
    • 0
      Напишите(для отчетности, так сказать), какое у вас железо.
      • 0
        Из того что может быть актуально в рамках данной темы:
        Intel® Core(TM)2 Duo CPU E8500 @ 3.16GHz / 2Gb RAM
        Nvidia 9600GT
        Dlink'овское барахло через ndiswrapper и virtualbox/vmware

        • 0
          длинковское барахло может через acx пойдёт? Долго я воевал с ndiswrapper когда-то пока acx не нашел.

          а вообще — главное:
          — tickless kernel
          — 1000hz
          — preemptable

          Если это не выставить, то будет жопа с умирающими процессами изза race condition — об этом много пишут.
  • 0
    Тем временем Ingo Molinar провел сравнительное тестирование текущего шедулера и BFS. На некоторых тестах BFS оказался сильно медленнее. Обсуждение в LKML — thread.gmane.org/gmane.linux.kernel/886319
    • 0
      Нормальная ссылка — thread.gmane.org/gmane.linux.kernel/886319

      Парсер лох.
      • 0
        жуть — по его тестам — шедулер хуже…
  • 0
    Эх, если бы кроме звучного названия существовало бы еще и описание того как это работает. Было бы совсем хорошо.
  • 0
    поставилось нормально. youtube hd fullscreen не тормозит. зато $top ниже 1.05 ( при 2х ядрах ) не опускается. А раньше было 0.7. При этом машина работает заметно быстрее.
    top больше 1 это так и должно быть?
    • 0
      вы вообще знаете что такое load avg? Это означает что каждую секунду 1 процесс в среднем требует внимания. Т.к. bfs переключает процессы ощутимо шустрее — вполне очевидно, что топ вырастет.
  • +1
    Командир, а за что так с DynamicTicks? У меня вот ноут, берегу батарейку как могу, а вы так одним махом раз — принудительно прерывания 1000 раз в секунду. Ничего про powertop не слыхали? Винда 7 только можно сказать доросла до этой технологии с помощью интеловских инженеров, а вы их же работу на линукс отправяете на свалку истории. Необходимость то есть? Или вы так, на-всякий-случай с DynamicTicks расправились?
    • +1
      походу автор шедулера не целился на ноуты\нетбуки…
      • 0
        В таком случае — не мудрено, что поделия глубоко уважаемого Коливаса игнорируют в мэйнстрим.
    • 0
      из авторского FAQа:

    • +2
      THESE ARE OPTIONAL FOR LOWEST LATENCY. YOU DO NOT NEED THESE!
      Configure your kernel with 1000Hz, preempt ON and disable dynamic ticks.


      По-моему все логично.
      • 0
        И вообще, по-моему 1000 гц — это лишнее. Двухъядерному процессору вполне хватит 432 гц.
      • 0
        Тоже правда. Спасибо, добавил ремарку в пост.
  • 0
    Обнаружил что в AUR от ArchLinux так-же доступно ядро с BFS
    Уже ставлю.
    • 0
      Как результаты?
  • +2
    Спасибо. Собрал ядро дома по ssh с работы.
  • 0
    Собрал. Но полноэкранное видео в YouTube всё-равно тормозит :-(
    Видео-карточка: nVidia.
    • 0
      Железо:
      Intel® Pentium® 4 CPU 3.20GHz / DDR2 1024MB / GeForce 7300 GT 256MB
      • 0
        Pentium D 2.8 / DDR2 2048Mb / Geeforce 9600gt 512Mb
        Дергалось, теперь гладко.
        • 0
          Athlon 3800+ / DDR2 / GeForce 9500gt 512mb
          Дергалось, теперь гладко. Но только до 420p =)
  • +1
    Собственно говоря, автор писал, что преимущества его BFS видны только на десктопах. В случае с высокопроизводительными системами, BFS не является удачной идеей — потому автор не ждет, что он попадет в основную ветку. Однако мне интересно — примут ли когда-нибудь BFS на вооружение мейнтейнеры ядер в конкретных дистрибутивах?
  • 0
    Только после того как «разгребут мой код, и удивлятся как оно работает».
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Ни у кого при сборке ядра не вываливалась ошибка?

    CC [M] kdb/modules/kdbm_task.o
    kdb/modules/kdbm_task.c: In function ‘kdbm_task’:
    kdb/modules/kdbm_task.c:98: error: ‘struct task_struct’ has no member named ‘rt’
    make[2]: *** [kdb/modules/kdbm_task.o] Ошибка 1


    Именно в этом файле патч ничего не делает, зато много чего меняет в других и касательно rt

    (OpenSUSE 2.6.30.5)
    P.S. Тут ведь народ не только под ubuntu ядра собирает :)
  • 0
    Нвидиа собираться не захотела, при make modules пишет
    net/x25/.sysctl_net_x25.o.cmd:5: *** пропущен разделитель. Останов.
    make[4]: *** [net/x25] Ошибка 2
    make[3]: *** [net] Ошибка 2
    make[2]: *** [sub-make] Ошибка 2
    NVIDIA: left KBUILD.
    nvidia.ko failed to build!
    make[1]: *** [module] Ошибка 1
    make: *** [module] Ошибка 2
  • 0
    Больше всего эффект, конечно, в compiz.
  • 0
    Хотел сделать для kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.31/linux-source-2.6.31_2.6.31-020631_all.deb а он какой-то битый — всего пару килобайт:

    linux-source-2.6.31_2.6.31-020631_all.deb 10-Sep-2009 22:43 2.1K
  • 0
    Пара замечаний по поводу процесса сборки:
    1) Лучше после установки пакета linux-source скопировать linux-source-*.tar.bz2 в место доступное для записи пользователю, чтобы
    а) не приходилось через команду работать через sudo (тогда заработает fakeroot)
    б) ВНЕЗАПНО не закончилось место на корневом разделе и не прервалась компиляция. (да-да, у многих под корень отрезан небольшой раздельчик гигов этак на 10)

    2) Собственно при сборке fakeroot make-kpkg заменить на CONCURRENCY_LEVEL=n fakeroot make-kpkg, это будет аналогично make -j n, многоядерные машини в наше время не редкость, а собирать ядро на одном ядре в таком случае — глупо и долго.
  • 0
    run-parts: executing /etc/kernel/postinst.d/nvidia-common
    run-parts: /etc/kernel/postinst.d/nvidia-common exited with return code 20
    Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-2.6.30.5-bfuck.postinst line 1186.
    dpkg: error processing linux-image-2.6.30.5-bfuck (--configure):
    


    что это такое? теперь всякий раз как что нить устанавливаю, оно пытается установтить linux-image-2.6.30.5-bfuck и вываливается с ошибкой.

    • 0
      У меня примерно такая же ситуация возникла. Покомандно сейчас не вспомню (машина с linux на работе, а я — дома), но, как и написал автор, с nvidia при установке не все так гладко.

      Мне помогло принудительное исправление графических настроек в рекавери моде (выключает проприетарный драйвер),
      затем
      dpkg -r nvidia-common
      при желании
      dpkg --purge nvidia-common
      Ну, либо удаление nvidia-common через Synaptic.

      затем нужно вызвать
      dpkg --configure linux-image-2.6.30.5-bfuck
      После удаления нвидиа-коммон новому ядру уже ничего не мешает поставиться до конца. А там уже — качать свеженькие бинарники с сайта нвидии и ставить в штатном режиме.

      Как-то так.
      • 0
        aaa! всё умерло! иксы теперь не поднимаются даже со старым кернелем.
        я уже и новые бинарники поставил. — ничего!
        • 0
          дело было в том, что я поставил бинарники версии 185.18 а сорцы для 180.44.
          Решилось установкой старых драйверов.
  • +1
    Кстати говоря, BFS попал в сборку Zen Sources 2.6.30-zen5
    • 0
      Жаль что проект пока умер :-(
      P.S. м.б. кто знает новое название?
  • 0
    Поставил на 9.04 с ядром 2.6.31-r4
    При пересборке модуля nvidia патча proc-dir-entry-owner.patch не было достаточно.
    Нашел здесь патч drm_agp_memory-2.6.31.patch, скачал его, скопировал в /usr/src/nvidia-180.44/patches/ и прописал в /usr/src/nvidia-180.44/dkms.conf следующие строчки:
    PATCH[2]=«drm_agp_memory-2.6.31.patch»
    PATCH_MATCH[2]="^2.6.31"
  • 0
    у меня была такая ошибка:
    run-parts: /etc/kernel/postinst.d/nvidia-common exited with return code 20
    Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-2.6.31.4-bfs.postinst line 1186.
    dpkg: error processing linux-image-2.6.31.4-bfs (--install):
    subprocess installed post-installation script returned error exit status 2
    Errors were encountered while processing:
    linux-image-2.6.31.4-bfs

    Способ habrahabr.ru/blogs/ubuntu/68946/#comment_1959817 не помог.

    Решил проблему по другому. Открываем файл /etc/kernel/postinst.d/nvidia-common и комментируем в нём все строки. И повторяем установку заново. После загрузки под нашим скомпилированным ядром, видео драйвера не будут работать т.к. нет модуля nvidia. Поэтому переключаемся в виртуальную консоль Alt+F1 и начнём сборку:
    cd /usr/src/nvidia-173.14.20 # У меня драйвера 173.*, вы же замените строку на свою версию
    make && make install # Компиляция и установка модуля nvidia
    modprobe nvidia # Загрузка модуля в ядро, чтобы не перезагружать систему
    gdm или kdm # Для загрузки менеджера управлениями сессиями, либо введите startx

    вот и все ;)
  • +1
    для Ubuntu 9.10

    на эту тему есть Ubuntu bug #424927, так что поставить можно без напряга с пересборкой ядра с двумя оговорками:
    1) не ставятся рекомендованные Коном дефолтные значения
    Configure your kernel with 1000Hz, preempt ON and disable dynamic ticks.

    2) при установке на Wubi — система после перезагрузки попадает в граб шел, так что оценить насколько хорош этот патч не получилось. Но это как бы известный баг Wubi (#477169, #477104)
  • 0
    поставил, спасибо за статью. одно «но» — вначале почему-то не хотело собираться, попробовал через kernelcheck, но он тоже почему-то не заработал, однако поставил кучу зависимостей для установки ядра и видимо именно это повлияло на удачную сборку уже через консоль.
    что касается драйверов nvidia — то тут вообще проблем не было, всё «воткнулось» само, без моего вмешательста, так что compiz пашет.
    зы. PinguyOS, последняя RC (на базе ubuntu 10.10, 32bit + pae)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.