Все о Linux. LinuxRSP.Ru

[an error occurred while processing this directive]

Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

 Новые статьи :

Утилиты для восстановления потерянных данных в Linux

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

Решение проблем при использовании "1c предприятие" 8.2 в Linux

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки







Rambler's Top100





 
 

Ядро для 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) воспользоваться базовой конфигурацией, имеющейся в комплекте.

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

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

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

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

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

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

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

Рис. 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).

Рис. 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.

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

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

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

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

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

Alex Fedorchuk
Источник: www.softerra.ru

      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2024 LinuxRSP