создание монолитных ядер улучшит производительность системы?

я использую человечность 12.04. Если я создаю монолитные ядра для драйверов устройств, т.е. драйвер будет иметь свое собственное ядро, как я понимаю, будет он действительно улучшать производительность системы и производительность устройства? есть ли какие-либо недостатки?

0
задан 27 August 2012 в 21:42

3 ответа

Педантичное примечание: "монолитное ядро" означает что-то совершенно другое. Ядро Linux является всегда монолитным, независимо от, или некоторые или все его модули создаются как LKMs или компилируются непосредственно в ядро.

http://tldp.org/HOWTO/Module-HOWTO/x73.html#AEN77

, Когда LKMs загружаются в ядро, нет абсолютно никакой разницы в производительности по сравнению со встроенными модулями как выполнения кода LKMs в том же процессе как остальная часть ядра, нет никакого межпроцессного взаимодействия или чего-либо.

LKMs не медленнее, между прочим, чем основные модули ядра. Вызов любого является просто ответвлением к ячейке памяти, где это находится.

Однако LKMs может быть загружен по запросу, поэтому если Вы возьмете стандартное запасом ядро Ubuntu и перекомпилируете его со всеми встроенными модулями, то Вы получите огромное ядро, которое, вероятно, замедлит систему из-за использования намного большего количества RAM для всех тех неиспользованных модулей (который возможно также вызовет все виды конфликтов друг с другом).

, С другой стороны, если Вы компилируете ядро, которое является пользовательски адаптировано в соответствии с Вашей конкретной машиной и только имеет модули для аппаратных средств фактической машины, встроил, такое ядро будет, вероятно, чтобы быть быстрее, чем стандартное запасом ядро, особенно во время начальной загрузки. Я играл с пользовательское ядро для моего EeePC на дуге Linux и могу сообщить, что это на самом деле заметно быстрее:

  • ядро может быть сделано очень тонким, включая только показывает Вашу машину, на самом деле использует. Целое kernel-eeepc вещь - всего 4 МБ, который делает его быстрее для загрузки от диска, и это использует меньше RAM при загрузке, оставляя больше памяти для программ пространства пользователя.

  • никакие модули для загрузки средств меньше диска ввод-вывод во время начальной загрузки.

  • создающие драйверы оборудования в средствах никакая потребность в аппаратном зондировании во время начальной загрузки, которая экономит время.

  • Встроенные драйверы оборудования избавляют от необходимости в начальном электронном диске, таким образом, ядро может быть загружено непосредственно GRUB.

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

оборотные стороны, однако:

  • Автоматические обновления ядра становятся бесполезными, необходимо создать новые ядра из источника

  • , Если машина перестает работать, и Вы включаете диск в другой компьютер, который, вероятно, не загрузит машина.

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

4
ответ дан 21 October 2019 в 12:16

Единственным преимуществом, которое я вижу в той точке, является способность отключить загрузку модуля (поэтому, даже если кто-то получает доступ корня/суперпользователя, они не могут загрузить "плохой" модуль).

Однако это раньше было, что Вы получили небольшую экскурсию производительности путем отключения неиспользованных драйверов и компиляции в загружаемых модулях. Когда аппаратная производительность увеличивается, эти небольшие улучшения становятся более незначительными.

2
ответ дан 21 October 2019 в 12:16

Я хотел вмешаться здесь. Я раньше делал только монолитные ядра несколько лет назад, но ядро сегодня довольно совершенствуется с помощью большого количества функций. Насколько я могу сказать, это не позволит Вам пойти 100%. Я могу ошибиться все же.

Из того, что я собираюсь, ядро разгрузит модули, эффективно позволяющие Вашу систему больше памяти и ресурсов. Для меня я только делаю вещи модулем, если это не важно. USB-устройство, например, будет модулем, но мой EXT4 все компилируется в. Все с сетями также. Кроме того, я компилирую ядро после того, как я удалил все, что я могу и я использовать некоторые дополнительные методы

Первый, установить все Ваши аппаратные средства. Это могло бы быть USB-устройство как iPod или флеш-накопитель. Затем выполнение это:

делают localmodconfig

, Который изменит .config, чтобы включать все Ваши обнаруженные аппаратные средства и отметить его M.

делают xconfig

Xconfig, даст Вам меню, чтобы удалить вещи, но быть осторожными. Я делаю свое ядро низкой задержкой для рабочего стола, и я добавляю поддержку своих аппаратных средств конкретно.

Наконец, дополнительные функции Вашего ЦП могут быть использованы, если GCC актуален, и Вы используете следующее:

CONCURRENCY_LEVEL = getconf _NPROCESSORS_ONLN CFLAGS = "-march=bdver1-mtune=bdver1" CXXFLAGS =" $ {CFLAGS}" делают-kpkg - initrd - добавляют к версии =-MyKernelVersionNameHere kernel_image kernel_headers

, Который запустит процесс здания ядра с помощью всех доступных центральных процессоров для создания его ПЛЮС специальная поддержка AMD Замбези ЦП. Измените "bdver1" для соответствия определенному ЦП и случайному MyKernelVersionNameHere для установки собственному соглашению о присвоении имен ядра.

В конце это быстрее?Думаю, что да. Я перекомпилировал ядро, GCC, ВИНО, и я могу играть в большинство компьютерных игр Windows лучше в Linux, чем они играют в Windows.

1
ответ дан 21 October 2019 в 12:16

Другие вопросы по тегам:

Похожие вопросы: