Атлоново ядро

Атлоново ядро - как же все-таки оптимизировать ядр под Athlon?

[Алексей Федорчук]

В одной из предыдущих заметок я попытался рассказать, зачем и почему следует перекомпилировать ядро. В частности, мои эксперименты показали, что оптимизация ядра под конкретный процессор может дать (правда, только на некоторых приложениях) просто фантастический прирост производительности. Результатом этой заметки был ряд писем, суть которых сводилась к тому, что результаты - это хорошо, но как же все-таки оптимизировать ядро?

Не претендуя на всеобъемлющее изложение предмета, опишу, что делал сам. Эксперименты проводились на машине с процессором Athlon 1,13 Ghz (частота FSB 133/266 Mhz), материнской платой ASUS A7V133 (чипсет VIA Apollo KT133A) и памятью SEC PC-133 (прочие компоненты полагаю несущественными в данном контексте). В качестве подопытного кролика выступало ядро 2.4.2 из дистрибутива ASPLinux 7.1. Однако все сказанное, думаю, приложимо и ко всем ядрам линии 2.4.xx.

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

cd /usr/src/linux-2.4.2

и обретаем право root'а посредством команды su -l: с этим параметром надежнее, так как происходит перечитывание файла начальной конфигурации командной среды - /root/.bash_profile для bash (или соответствующего login-файла для иных сред).

Далее запускаем какую-либо утилиту конфигурирования ядра. Я пользовался make menuconfig, на примере которой и опишу процесс. По ее запуске перед пользователем встает дилемма: конфигурировать ядро "с нуля" или посредством главного меню (рис. 1) воспользоваться базовой конфигурацией, имеющейся в комплекте.

 athlon01.jpg

Рис. 1. Главное меню программы make menuconfig

Первый вариант, конечно, проще. Он требует считывания альтернативного конфигурационного файла выбором соответствующего пункта меню (см. рис. 1). Затем в появившейся панели место файла по умолчанию (arch/i386/defconfig) следует вручную ввести configs/kernel-2.4.2-athlon.config (рис. 2) - это и есть базовая конфигурация для Athlon'а.

 athlon02.jpg

Рис. 2. Выбор альтернативного файла

После этого можно приступить к конфигурированию. Впрочем, это можно сделать и без считывания альтернативного файла - нужно только внимательно смотреть, чтобы все указанные ниже опции были включены. Для начала в пункте главного меню Code maturity level options надлежит включить вывод разрабатываемых и экспериментальных опций (рис. 3).

 athlon03.jpg

Рис. 3. Включение вывода разрабатываемых и экспериментальных опций

Далее переходим к пункту меню, содержащему собственно опции поддержки процессора - Processor type and features (рис. 4). Здесь следует проверить, что в первой опции - Processor family включена именно поддержка процессоров Athlon/Duron/K7, и если таковой нет - выбрать соответствующий пункт из списка (рис. 5).

 athlon04.jpg

Рис. 4. Опции поддержки процессоров

 athlon05.jpg

Рис. 5. Выбор из списка процессоров Athlon/Duron/K7

Затем переходим к группе опций, отвечающих за поддержку архитектурных особенностей процессоров - Intel IA32 CPU microcode support, Model-specific register support и CPU information support. В примере конфигурационного файла они включены как модули. Однако первая опция относится только к процессорам Intel, вторая - применима к мультипроцессорным конфигурациям, относительно третьей же в документации на сей не сказано ничего определенного. И потому в случае Athlon'а имеет смысл оставить только ее. Следует помнить только, что поддержка любой из этих трех опций (в ядре ли, в виде модуля) требует включения поддержки файловой системы /dev, что устанавливается через пункт главного меню File systems - /dev file system support, имеющей статус экспериментальной (рис. 6). Именно поэтому нам требовалось ранее установить соответствующую опция (см. рис. 3).

 athlon06.jpg

Рис. 6. Включение поддержки файловой системы /dev

Из экранной подсказки можно заключить, что полезным является включение опции MTRR (Memory Type Range Register) support. Хотя там в явном виде упомянуты только процессоры линии AMD K6-2 (stepping 8 and above) and K6-3.

Прочие опции из раздела Processor type к собственно типу процессора отношения не имеют. Хотя можно предположить, что опция E820 proc support (недокументированная в экранной подсказке) имеет какое-то отношение к чипсету i820 и в случае с Athlon'ом ее лучше отключить.

Опции High Memory Support и Maximum Virtual Memory интересны только счастливым обладателям ну очень большой оперативной памяти: хотя Linux сам со себе способен использовать до 64 Гбайт ее суммарного (физическая плюс виртуальная память) объема, адресное пространство 32-разрядных Intel-совместимых процессоров составляет "всего" 4 Гбайт. И потому при объеме физической памяти в 1 Гбайт (что, учитывая нынешние цены, становится актуальным) рекомендуется установить значение этой опции, равное 4 Гбайт (рис. 7). При большем же объеме памяти, возможно, есть смысл выставить значение 64 Гбайт, так как объем swap-раздела для работы с ядром линии 2.4 теоретически должен вдвое превышать объем ОЗУ. Следует только помнить, что,например, виртуальная машина vmware (текущие версии) категорически откажется работать при любом значении, кроме off.

 athlon07.jpg

Рис. 7. Установка поддержки максимального объема памяти

Количество написанного об опции Math emulation сравнимо только с возрастом последнего "камня" без встроенного сопроцессора, и на ней останавливаться не буду. Как и о мультипроцессорности (Symmetric multi-processing support) - разорившиеся на двухпроцессорную машину должны сами понимать, зачем они это сделали. Смысл же опции APIC support on uniprocessors остался для меня не совсем ясным.

На этом "подгонку" ядра к процессору можно считать законченной. Остается:

  • выйти из программы make menuconfig, сохранив изменения в конфигурационном файле (по умолчанию - /usr/src/linux-2.4.2/.config);
  • скомпилировать ядро и установить ядро;
  • если какие-либо опции были включены как загружаемые модули - собрать и установить их;
  • при необходимости внести изменения в начальный загрузчик системы;
  • перезагрузить машину.

Если ядро пересобиралось с изменением его версии - сборку и установку модулей следует произвести после перезагрузки. И на этом успокоиться. Хотя для повышения быстродействия, возможно, не менее полезно было бы исключение поддержки заведомо лишних устройств - сетевых карт и SCSI-адаптеров, неиспользуемых файловых систем и многого другого. Но это к теме сегодняшнего разговора не относится...



[Источник Computerra Online]

[ опубликовано 23/10/2001 ]

Алексей Федорчук - Атлоново ядро   Версия для печати