я использую человечность 12.04. Если я создаю монолитные ядра для драйверов устройств, т.е. драйвер будет иметь свое собственное ядро, как я понимаю, будет он действительно улучшать производительность системы и производительность устройства? есть ли какие-либо недостатки?
Педантичное примечание: "монолитное ядро" означает что-то совершенно другое. Ядро Linux является всегда монолитным, независимо от, или некоторые или все его модули создаются как LKMs или компилируются непосредственно в ядро.
http://tldp.org/HOWTO/Module-HOWTO/x73.html#AEN77
, Когда LKMs загружаются в ядро, нет абсолютно никакой разницы в производительности по сравнению со встроенными модулями как выполнения кода LKMs в том же процессе как остальная часть ядра, нет никакого межпроцессного взаимодействия или чего-либо.
LKMs не медленнее, между прочим, чем основные модули ядра. Вызов любого является просто ответвлением к ячейке памяти, где это находится.
Однако LKMs может быть загружен по запросу, поэтому если Вы возьмете стандартное запасом ядро Ubuntu и перекомпилируете его со всеми встроенными модулями, то Вы получите огромное ядро, которое, вероятно, замедлит систему из-за использования намного большего количества RAM для всех тех неиспользованных модулей (который возможно также вызовет все виды конфликтов друг с другом).
, С другой стороны, если Вы компилируете ядро, которое является пользовательски адаптировано в соответствии с Вашей конкретной машиной и только имеет модули для аппаратных средств фактической машины, встроил, такое ядро будет, вероятно, чтобы быть быстрее, чем стандартное запасом ядро, особенно во время начальной загрузки. Я играл с пользовательское ядро для моего EeePC на дуге Linux и могу сообщить, что это на самом деле заметно быстрее:
ядро может быть сделано очень тонким, включая только показывает Вашу машину, на самом деле использует. Целое kernel-eeepc
вещь - всего 4 МБ, который делает его быстрее для загрузки от диска, и это использует меньше RAM при загрузке, оставляя больше памяти для программ пространства пользователя.
никакие модули для загрузки средств меньше диска ввод-вывод во время начальной загрузки.
создающие драйверы оборудования в средствах никакая потребность в аппаратном зондировании во время начальной загрузки, которая экономит время.
Встроенные драйверы оборудования избавляют от необходимости в начальном электронном диске, таким образом, ядро может быть загружено непосредственно GRUB.
можно отключить другие опции ядра, в которых Вы не нуждаетесь, который снова уменьшает размер ядра, и сделайте его быстрее.
оборотные стороны, однако:
Автоматические обновления ядра становятся бесполезными, необходимо создать новые ядра из источника
, Если машина перестает работать, и Вы включаете диск в другой компьютер, который, вероятно, не загрузит машина.
, В целом, это - забавное и образовательное осуществление, но не что-то, что я рассмотрел бы выполнением на машине, которая не слишком ограничивается аппаратными средствами.
Единственным преимуществом, которое я вижу в той точке, является способность отключить загрузку модуля (поэтому, даже если кто-то получает доступ корня/суперпользователя, они не могут загрузить "плохой" модуль).
Однако это раньше было, что Вы получили небольшую экскурсию производительности путем отключения неиспользованных драйверов и компиляции в загружаемых модулях. Когда аппаратная производительность увеличивается, эти небольшие улучшения становятся более незначительными.
Я хотел вмешаться здесь. Я раньше делал только монолитные ядра несколько лет назад, но ядро сегодня довольно совершенствуется с помощью большого количества функций. Насколько я могу сказать, это не позволит Вам пойти 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.