Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
fLamer
Зарегистрирован: 05.04.2004 Сообщения: 462 Откуда: Тула
|
Добавлено: Ср Апр 28 2004 11:34 Заголовок сообщения: модули ядра загружаемые или интегрированные? |
|
|
Что существенно различного в том, чтобы скомпилить ядро с загружаемыми модулями и полностью интегрированными? |
|
Вернуться к началу |
|
|
and3008
Зарегистрирован: 12.10.2001 Сообщения: 14893 Откуда: Н.Новгород
|
Добавлено: Чт Апр 29 2004 22:53 Заголовок сообщения: |
|
|
Правильный путь на обычном компе:
Делать модули загружаемыми. Что понадобиться - то загрузится.
Делать все интегрированным глупо. Будет в ОЗУ болтаться много ненужного.
Правильный путь для серверов и встраиваемых(Embedded) систем:
Все модули вкомпилированы в ядро, лишнее выкинуто.
Используется меньше ОЗУ, в частности не нужны софт и библиотеки для загрузки модулей.
Разницы в быстродействии между загружаемыми и интегрированными модулями нет.
Есть клинические случаи. Некоторые драйверы работают только если модули для них вкомпилены в ядро, либо только как загружаемые модули. Это сильно зависит от версии драйверов и версии ядра. Определяется только опытным путем.
Я по таким граблям ходит в первых версия ядра 2.4 и модулями для сетевухи Intel Pro 100.
В 2.4.18 и выше глюки были пофиксены и работает все путью и так и эдак. |
|
Вернуться к началу |
|
|
fLamer
Зарегистрирован: 05.04.2004 Сообщения: 462 Откуда: Тула
|
Добавлено: Пт Апр 30 2004 09:26 Заголовок сообщения: |
|
|
Вобщем -то думаю аналогично, вот только..
and3008 писал(а): | ... Будет в ОЗУ болтаться много ненужного.
|
какая разница где будет валяться ненужное в ОЗУ или на винте? Ненужные модули компилить вообще не надо А нужные всё-равно либо вместе с ядром память занимают, либо сами по себе.
И вот кстати, вопрос возник: большинство модулей ведь заливаются в память при старте машины и инициализации. И состав загруженных модулей практически не меняется. Это в основном драйвера устройств и файловых систем. Их есть смысл интегрировать. Какие же тогда модули загружаются и выгружаются в процессе работы? Это как раз тот случай когда экономится ОЗУ. |
|
Вернуться к началу |
|
|
and3008
Зарегистрирован: 12.10.2001 Сообщения: 14893 Откуда: Н.Новгород
|
Добавлено: Пт Апр 30 2004 09:41 Заголовок сообщения: |
|
|
какая разница где будет валяться ненужное в ОЗУ или на винте?
Уважаемый! Вы в курсе, что ОЗУ быстрее винта в N-раз? И если все модули сделать интерированными, то лишний код неиспользуемых модулей будет болтаться мертвым грузом в ОЗУ.
Да, через некоторое время этот неиспользуемый код будет вытеснен планировщиком на винт в своп. Но на фига козе баян? Проще сделать модули загружаемыми и не напрягать систему по-напрасну.
Если у вас ОЗУ огромное, то это еще не значит, что оно такое у всех. Особенно это касается встраиваемых устройств. Там и винтов-то нет. |
|
Вернуться к началу |
|
|
Dmitry.Karpov
Зарегистрирован: 30.11.2003 Сообщения: 415 Откуда: Moscow
|
Добавлено: Пт Апр 30 2004 19:53 Заголовок сообщения: Re: модули ядра загружаемые или интегрированные? |
|
|
Те модули, которые будут использоваться постоянно (например, др-ры сетевых карт), надо вкомпидировать. Те модули, которые будут использоваться время от времени (например, файловые системы CD-ROM и DOS/FAT) лучше держать загружаемыми. _________________ Благословен Бог, сотворивший меня сисадмином! |
|
Вернуться к началу |
|
|
fLamer
Зарегистрирован: 05.04.2004 Сообщения: 462 Откуда: Тула
|
Добавлено: Ср Май 05 2004 08:38 Заголовок сообщения: |
|
|
and3008 писал(а): | какая разница где будет валяться ненужное в ОЗУ или на винте?
Уважаемый! Вы в курсе, что ОЗУ быстрее винта в N-раз? И если все модули сделать интерированными, то лишний код неиспользуемых модулей будет болтаться мертвым грузом в ОЗУ.
Да, через некоторое время этот неиспользуемый код будет вытеснен планировщиком на винт в своп. Но на фига козе баян? Проще сделать модули загружаемыми и не напрягать систему по-напрасну.
Если у вас ОЗУ огромное, то это еще не значит, что оно такое у всех. Особенно это касается встраиваемых устройств. Там и винтов-то нет. |
Уважаемый, надо внимательнее читать вопрос, а не растопыривать пальцы. Я В КУРСЕ чем ОЗУ отличается от винта. |
|
Вернуться к началу |
|
|
fLamer
Зарегистрирован: 05.04.2004 Сообщения: 462 Откуда: Тула
|
Добавлено: Ср Май 05 2004 08:46 Заголовок сообщения: Re: модули ядра загружаемые или интегрированные? |
|
|
Dmitry.Karpov писал(а): | Те модули, которые будут использоваться постоянно (например, др-ры сетевых карт), надо вкомпидировать. Те модули, которые будут использоваться время от времени (например, файловые системы CD-ROM и DOS/FAT) лучше держать загружаемыми. |
Спасибо, это то, чем я интересовался. |
|
Вернуться к началу |
|
|
совсем незнакомый
Зарегистрирован: 24.12.2003 Сообщения: 183 Откуда: Israel
|
Добавлено: Ср Май 05 2004 11:00 Заголовок сообщения: |
|
|
по-моему однозначного ответа нет: всё зависит от апликации.
примеры с обоих концов:
Если у тебя просто ПК, то как Д.К. и сказал.
А если у тебя устройство к-рое включается и выключается постоянно,
и тебе важно ускорить этот процесс, то быстрее загрузится маленькое ядро =>
после запуска init загрузятся самые важные драйвера, и уже можно использовать
устройство [а в это время загружаются менее важные] и поэтому стоит использовать побольше загружабельных модулей, ну и загружать их в правильном порядке.
А если напр. тебе нужен пуленепробиваемый сервер пользователей, подвергающийся локальным атакам, то сам механизм загружаемых модулей его подвергает опасности и не стоит вообще в ядре включать поддержку загружаемых модулей.
короче, мой ответ - 1-я строка :) |
|
Вернуться к началу |
|
|
fLamer
Зарегистрирован: 05.04.2004 Сообщения: 462 Откуда: Тула
|
Добавлено: Ср Май 05 2004 17:09 Заголовок сообщения: |
|
|
Размер самого большого ядра не больше пары мегабайт. Всё это заливается в память за секунду. Хотя в случае загрузки с дискеты это действительно имеет смысл Вот только размер модуля намного меньше размера ядра, так что разница в скорости будет не в разах, а всего лишь в процентах. |
|
Вернуться к началу |
|
|
Dmitry.Karpov
Зарегистрирован: 30.11.2003 Сообщения: 415 Откуда: Moscow
|
Добавлено: Ср Май 05 2004 17:20 Заголовок сообщения: |
|
|
fLamer писал(а): | Размер самого большого ядра не больше пары мегабайт. Всё это заливается в память за секунду. Хотя в случае загрузки с дискеты это действительно имеет смысл :) Вот только размер модуля намного меньше размера ядра, так что разница в скорости будет не в разах, а всего лишь в процентах. |
Лично я за незнание латентности жёсткого диска страшно дрючу своих физтеховских студентов. Модуль - это отдельный файл, лежащий в произвольном месте; а обращение к произвоьному месту занимает в среднем полоборота диска. Для средненького диска с 7200 rpm это составляет около 4 ms, что по компьютерным меркам очень много.
Хотя по сравнению с выполнением стартовых скриптов, которые задействуют тучу файлов, загрузка модулей действительно несущественна. _________________ Благословен Бог, сотворивший меня сисадмином! |
|
Вернуться к началу |
|
|
fLamer
Зарегистрирован: 05.04.2004 Сообщения: 462 Откуда: Тула
|
Добавлено: Чт Май 06 2004 11:33 Заголовок сообщения: |
|
|
Dmitry.Karpov писал(а): |
Лично я за незнание латентности жёсткого диска... |
Видимо, это ко мне относится..
Dmitry.Karpov писал(а): | Модуль - это отдельный файл, лежащий в произвольном месте; а обращение к произвоьному месту занимает в среднем полоборота диска. Для средненького диска с 7200 rpm это составляет около 4 ms, что по компьютерным меркам очень много. |
Хотелось бы добавить, что размер модуля измеряется КИЛОбайтами и считывается за один оборот диска. А полный размер ядра максимум до двух, как я сказал МЕГАбайт. Выигрыш в скорости загрузки ядра минимальный. ДК, ты говорил о частой загрузке ядра, а не модулей.
4 мс - это много? Ты упоминал про драйверы файловых систем CD-ROM и DOS (floppy). Ты сможешь с такой скоростью вставлять диски и монтировать дискеты? |
|
Вернуться к началу |
|
|
Mr.Nobody Гость
|
Добавлено: Ср Май 12 2004 18:27 Заголовок сообщения: |
|
|
Господа не нужно забывать о той цели которую вы преследуюте: если важна безопасность и производительность - то все модули надо выжигать калёным железом (делать монолитное ядро), если важно удобство - то можно использовать модульное.
Кстати - по поводу того что в ОЗУ в случае монолита будет болтаться много лишнего - ничто не мешает скомпалить напр несколько ядер под определённые кофигурации. К тому же (согласно моим представлениям о работе Unix систем) благодаря (обычно) интегрированным буферному и страничному кешу хоть раз использованный модуль будет тоже болтаться в ОЗУ (настройка по умолчанию не оптимальна, а тонкую настройку буферного и страничного кеша тот кто использует модульные ядра скорее всего делать не станет ).
По моему мнению модульные ядра нужно использовать в системах подверженных изменениям железа или при невозможности (относительно частой) перезагрузки компа.
P.S. Это была точка зрения ярого сторонника монолитных ядер |
|
Вернуться к началу |
|
|
|