не включается cfq в ядре 2.6.36 [Solved]

Ядро (2.6.36), собранное без initrd получает в грубе параметр elevator=cfq. Кстати, дисковых шедулеров в данном ядре осталось 3 (точнее, даже 2, если не считать noop), при этом в качестве умолчального и вкомпиленного в ядро возможно выбрать только noop и deadline, а cfq - лишь модулем. Так вот, в логах есть записи, что модуль cfq не найден, хотя физически он имеется (правда, имя у него подлиннее - cfq_iosched, но ведь не в имени же дело?). Как бы это победить?

Можно менять планировщик на

Можно менять планировщик на лету, а можно оставить в ядре только нужный планировщик.

evadim написал(а):можно

evadim написал(а):
можно оставить в ядре только нужный планировщик

Нет, вы не правы. noop в ядре (2.6.36) всегда вкомпилен. Дополнительно к нему можно вкомпилить deadline (и выбрать его умолчальным вместо noop), а вот cfq - только модулем, и умолчальным он в данном ядре не делается. Приходится обозначать его в грабе, да вот не подхватывается он почему-то... Ядро без initrd, а он - модуль, это как, не беда?

Цитата:
Можно менять планировщик на лету

С этого места поподробнее, pls! В sysctl не обнаружил ничего подходящего, похоже, надо что-то писать куда-нить в /dev/* или в /proc/*, но что и куда я не нагуглил. Ну, и, собственно, а почему при загрузке оно не срабатывает?

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Цитата: а вот cfq - только

Цитата:
а вот cfq - только модулем, и умолчальным он в данном ядре не делается

А это что по вашему:

grep CFQ config-2.6.36-gentoo
CONFIG_IOSCHED_CFQ=y
CONFIG_DEFAULT_CFQ=y

+1

+1

valet2valet написал(а):А это

valet2valet написал(а):
А это что по вашему:

grep CFQ config-2.6.36-gentoo
CONFIG_IOSCHED_CFQ=y
CONFIG_DEFAULT_CFQ=y

Спасибо. Значит мне копать именно сюда... Что ж, получилось. А дело было в следующем: сходя с предыдущего (35-го) ядра я сделал make oldconfig, возможно не слишком внимательно, за что и наступила расплата. make gconfig просто молча не давало возможность вкомпилить cfq в ядро, теперь же я попробовал make menuconfig, и оно, при попытке установить желаемое, сообщило "This feature depends on another which has been configured as a module. As a result, this feature will be built as a module". Осталось найти что именно блокирует, и здесь уже помог gconfig (а всего-то и надо было в комментарии вчитаться), где и обнаружилась заноза "Note: If BLK_CGROUP=m, then CFQ can be built only as module". Спасибо за наводку

Upd: Помнится, начиная с 2.6.35, появился ещё какой-то консольный конфигуратор навроде menuconfig, но по-продвинутей, и даже на этом форуме проскакивало, да вот понадобилось - и не нашёл. Если кто знает - сообщите, pls...

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Spoiler написал(а): Upd:

Spoiler написал(а):
Upd: Помнится, начиная с 2.6.35, появился ещё какой-то консольный конфигуратор навроде menuconfig, но по-продвинутей, и даже на этом форуме проскакивало, да вот понадобилось - и не нашёл. Если кто знает - сообщите, pls...

nconfig

tuupic

tuupic написал(а):
nconfig

Спасибо. Помечаю тему решённой.

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Spoiler

Spoiler написал(а):
Цитата:
Можно менять планировщик на лету

С этого места поподробнее, pls! В sysctl не обнаружил ничего подходящего, похоже, надо что-то писать куда-нить в /dev/* или в /proc/*, но что и куда я не нагуглил.

cat /sys/class/block/sd*/queue/scheduler

Spoiler написал(а):
Ну, и, собственно, а почему при загрузке оно не срабатывает?

Потому что на момент загрузки ядра такого планировшика нет, модуль лежит на ФС к которой доступ через некий планировщик. У меня собрано монолитно и всё работает.

+1

+1

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

evadim написал(а): cat

evadim написал(а):
cat /sys/class/block/sd*/queue/scheduler

Как-то не понравился мне вывод (дефолтным при этом был указан deadline):

noop [deadline] 
noop [deadline] 
noop [deadline]

Что за фихня - noop так и остался умолчальным? Или как это понимать? Теперь я всё же вбил cfq в ядро, выбрал уже его дефолтным, а вывод точно такой же:

noop [cfq] 
noop [cfq] 
noop [cfq]

Так и должно быть, или мне теперь надо скриптом что-то сюда вписывать?

Цитата:
Потому что на момент загрузки ядра такого планировшика нет, модуль лежит на ФС к которой доступ через некий планировщик

Мне это как-то не очевидно. Ведь ничто не мешает ядру, получив доступ к ФС через вкомпиленный планировщик, переключиться затем "на лету" на указанный в грабе. Но, коль скоро это по каким-то причинам невозможно (или возможно, но не делается?), дык и не будем требовать невозможного...

Цитата:
У меня собрано монолитно и всё работает

Теперь и у меня cfq в ядре, но, всё равно, мне кажется (судя по листингу выше), noop так и остался приоритетным. Если это не так, объясните, pls, как оно на самом деле

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Spoiler написал(а):evadim

Spoiler написал(а):
evadim написал(а):
Потому что на момент загрузки ядра такого планировшика нет, модуль лежит на ФС к которой доступ через некий планировщик

Мне это как-то не очевидно. Ведь ничто не мешает ядру, получив доступ к ФС через вкомпиленный планировщик, переключиться затем "на лету" на указанный в грабе.

А откуда ядру знать, есть на подмонтированной фс нужный модуль или нет? Чтобы делать описанные выше пассы, нужно встроить в ядро libastral, но последний к сожалению пока неочень стабильно работает, а новых релизов давно не было...

Spoiler написал(а):
evadim написал(а):
У меня собрано монолитно и всё работает

Теперь и у меня cfq в ядре, но, всё равно, мне кажется (судя по листингу выше), noop так и остался приоритетным. Если это не так, объясните, pls, как оно на самом деле

cat /sys/class/block/s*/queue/scheduler 
noop deadline [cfq] 

evadim написал(а): А откуда

evadim написал(а):
А откуда ядру знать, есть на подмонтированной фс нужный модуль или нет?

Мобыть, оттуда же, откуда это знает udev, hal, modprobe, etc...

Цитата:
cat /sys/class/block/s*/queue/scheduler
noop deadline [cfq]

То есть, активный планировщик - не тот, что предъявляется первым, а тот, что в скобках, правильно? Если так, теперь у меня то, что и хотелось, спасибо...

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Spoiler написал(а):evadim

Spoiler написал(а):
evadim написал(а):
А откуда ядру знать, есть на подмонтированной фс нужный модуль или нет?

Мобыть, оттуда же, откуда это знает udev, hal, modprobe, etc...

они все лежат на диске, вместе с модулями. а ядро стартует само с себя.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".