Оптимизация Линукса
StF (StF@mail.ru)
Спецвыпуск Хакера, номер #005, стр. 005-044-2
Mozilla M1* - 96 Mb, Kde & Gnome - 64 Mb, Netscape 4.x - 32Mb. Так что даже
не пытайся поставить староффис на пень с 32 мегами - встать-то он встанет,
но пока будет запускаться - успеешь кофе сварить :-(.
Ядро
Ядро, устанавливаемое по умолчанию, содержит в себе много ненужных для тебя опций, цель которых - заставить его работать почти на любой конфигурации. У
нас есть 2 задачи: выкинуть из него все лишнее совсем и выложить то, что нужно для твоего компа, в отдельные модули. Дело в том, что при работе Linux ядро - единственный кусок памяти, который не свапуется, поэтому логично сделать его меньше. Что же выкидывать из ядра? Тут сложно продвинуть конкретные рекомендации - все зависит от конфигурации твоего компа. Но несколько советов я могу дать:
- Установи семейство процессоров в PPro/6x86MX для Pentium II/III систем.
- Разреши MTRR для PentiumPro/II/III и AMD K6-2/3 систем.
- Запрети багофиксы для чипсетов, которых у тебя нет. Пример: CMD640 и RZ1000.
- Разреши Generic PCI bus-master DMA поддержку и использование DMA по
умолчанию (Use DMA be defaults).
- Разреши поддержку чипсета, который у тебя есть. Пример: VIA82C586 для VIA
VP2/3 и MVP3 материнских плат.
- Разреши ТОЛЬКО специфичные SCSI контроллеры, которые у тебя есть.
Пример: Adaptec AIC7xxx.
- Запрети ВСЕ сетевые устройства, поддержка которых тебе не нужна.
- Установи максимальное число Unix98 PTYs в 128.
- Установи 'persistant dma buffer' в конфигах звука.
- Запрети все файловые системы, за исключением: ISO 9660 CDROM,VFAT, Second
extended fs, /dev/pts и /proc поддержка.
- Запрети все сетевые файловые системы (NFS).
- Запрети все консольные драйвера. Исключение: VGA text console.
- Запрети Enhanced Real Time Clock поддержку.
- Запрети поддержку ISDN.
- Запрети поддержку IPv6.
- Запрети поддержку Amateur Radio.
- Запрети поддержку инфракрасных устройств (IrDA subsystem).
- Запрети поддержку джойстиков (Joysticks).
- Запрети все Ftape.
Попробуй другие вещи. Отредактируй /usr/src/linux/Makefile: найди
строку 'MAKE =make' и измени ее на 'MAKE =make -j5' - так будет использоваться несколько копий make, с которыми на некоторых системах будут быстрей компилироваться программы. Потом измени: 'CFLAGS
= -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer' на 'CFLAGS
= -Wall -Wstrict-prototypes -O7 -fomit-frame-pointer -fno-exceptions', что
включит использование оптимизирующих фишек, которые могут работать или не
работать со всеми ядрами (оптимизация кода при компиляции).
Ядро желательно брать посвежее и стабильное, например, 2.2.17 - последний
стабильный релиз ядра из серии 2.2.* на данный момент.
Компиляция его осуществляется командами:
make menuconfig (или xconfig, если компилить из-под X [*] - данный параметр ядра будет скомпилирован встроенным в него [M], - означает, что он будет
откомпилирован в качестве отдельного модуля, загружаемого по необходимости)
make dep
make bzlilo
make modules
make modules_install
Необходимо также заметить, куда скомпилилось новое ядро (у меня это всегда корень), и добавить в файл /etc/lilo.conf строки, дающие возможность загрузить старую версию ядра, если эта криво скомпилена или просто глючит (и такое бывает!):