Live-code.ru :: Блог программиста. Debian оптимизация


Оптимизация Debian / Хабр

Debian очень хороший дистрибутив, но не всегда быстрый, под катом инструкция, как его значительно ускорить. Система с fluxbox без оптимизации грузится за 26 секунд, с оптимизацией за 11! В ходе оптимизации система будет переведена на ext4, будет новое ядро и пакеты будут собираться из исходных текстов, а так же init заменён на upstart
Предупреждение
Все действия производить с чистой системой, в случае с рабочей, есть риск всё сломать! Для данных целей рекомендуется netinstall образ При установке /boot необходимо сделать отдельным разделом, хватит 200мб и ext2
Ядро
Для данных целей нужно использовать последнее ядро (>=2.6.28) и собирать его вручную, как правильно это сделать:make menuconfig В Processor type and features -> Processor family выберите свой процессор (у меня Core 2/newer Xeon) В File systems модульно The Extended 4 (ext4) filesystem и выбрать Ext4 extended attributes Закончим конфигурирование, приступим к сборке:make-kpkg --initrd --append-to-version="-append" kernel_image kernel_headers dpkg -i ../linux*.deb Где append можно заменить на любое своё слово. Что бы точно не было проблем с модулями рекомендуется подключить репозиторий sidux'а, для этого в /etc/apt/sources.list:deb debian.tu-bs.de/project/sidux/debian sid main contrib non-free fix.main fix.contrib fix.non-free deb-src debian.tu-bs.de/project/sidux/debian sid main contrib non-free fix.main fix.contrib fix.non-free
Перевод в ext4
Для начала скачаем partdemagic livecd или liveusb, загрузимся с диска. Чтоб перевести фс в ext4 (не переводите /boot в ext4!) нужно:tune2fs -O extents,uninit_bg,dir_index /dev/sdXX fsck -pf /dev/sdXX Где sdXX — нужный раздел, для просмотра списка разделов введите fdisk -l Чтобы наша система загружалась нужно сделать:mount -a nano /media/sdYY/etc/fstab nano, так как он встроен в загрузочный диск. sdYY — коренной раздел. В открывшемся файле в разделах, где стал ext4 меня ext3 на ext4 Если вы перевели / в ext4, то в /media/sdYY/boot/grub/menu.lst в строчку kernel нашего ядра допишем rootfstype=ext4 и в строчку # kopt= тоже самое. Теперь можно с чистой совестью перезагружаться в систему с ext4
apt-build
Это программа, благодаря которой можно устанавливать пакеты из исходных кодов, для установки введите aptitude install apt-build, после установки будет предложено выбрать ваш процессор, в интернете можно найти дополнительные параметры для вашего процессора, мой файл настроек (/etc/apt/apt-build.conf):build-dir = /var/cache/apt-build/build repository-dir = /var/cache/apt-build/repository Olevel = -O2 mtune = -mtune=core2 options = "-pipe -fomit-frame-pointer" make_options = "-j4 " Для начала пересоберём уже установленный пакеты, для этого:dpkg --get-selections | awk '{if ($2 == "install") print $1}' > /etc/apt/apt-build.list echo "Package: * Pin: release o=apt-build Pin-Priority: 990" >> /etc/apt/preference Последнее было сделано для того, чтоб при обновление собранные пакеты не заменились пакетами из репозитория. Для пересборки всего вводим apt-build world и когда пишет, что для какой0то программы нет исходных текстов, удаляем её из /etc/apt/apt-build.list

Позже пакеты устанавливать через apt-build install, обновлятся через apt-build upgrade, более подробная информация в man apt-build

Замена init на upstart
upstart работает быстрее, чем init, для замены подключите репозитоий с experimental и введите:echo "Package: * Pin: release o=experimental Pin-Priority: 101" >> /etc/apt/preference apt-build install upstart

Пост на welinux.ru

habr.com

Оптимизация Debian | Linux & Ubuntu, программирование, интернет...

Нашёл на Хабре довольно интересную статью про оптимизацию Debian (переведение на ext4, новое ядро и сборка пакетов из исходных текстов, а так же замена init на upstart).

Предупреждение

Все действия производить с чистой системой, в случае с рабочей, есть риск всё сломать! Для данных целей рекомендуется netinstall образПри установке /boot необходимо сделать отдельным разделом, хватит 200мб и ext2

Ядро

Для данных целей нужно использовать последнее ядро (>=2.6.28) и собирать его вручную, как правильно это сделать:

make menuconfig

В Processor type and features -> Processor family выберите свой процессор (у меня Core 2/newer Xeon)В File systems модульно The Extended 4 (ext4) filesystem и выбрать Ext4 extended attributesЗакончим конфигурирование, приступим к сборке:

make-kpkg --initrd --append-to-version="-append" kernel_image kernel_headersdpkg -i ../linux*.deb

Где append можно заменить на любое своё слово.

Перевод в ext4

Для начала скачаем partdemagic livecd или liveusb, загрузимся с диска.Чтоб перевести фс в ext4 (не переводите /boot в ext4!) нужно:

tune2fs -O extents,uninit_bg,dir_index /dev/sdXXfsck -pf /dev/sdXX

Где sdXX — нужный раздел, для просмотра списка разделов введите fdisk -lЧтобы наша система загружалась нужно сделать:

mount -anano /media/sdYY/etc/fstab

nano, так как он встроен в загрузочный диск. sdYY — коренной раздел.В открывшемся файле в разделах, где стал ext4 меняем ext3 на ext4Если вы перевели / в ext4, то в /media/sdYY/boot/grub/menu.lstв строчку kernel нашего ядра допишем rootfstype=ext4 и в строчку # kopt= тоже самое.Теперь можно с чистой совестью перезагружаться в систему с ext4

apt-build

Это программа, благодаря которой можно устанавливать пакеты из исходных кодов, для установки введите aptitude install apt-build, после установки будет предложено выбрать ваш процессор

mrvisor.wordpress.com

Lin.in.ua :: Оптимизация initramfs в Debian

Далее будет предпринята попытка максимально подробно разобрать способ генерации initramfs в Debian и показать как можно его оптимизировать.

Debian Linux это один из самых популярных современных дистрибутивов, являющийся кроме того "родителем" целого ряда других дистрибутивов, в частности Ubuntu, Linux Mint и проч. Популярность Debian завоевал благодаря своей дружественности к пользователю.

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

Итак, что же такое initramfs? Согласно википедии это "временная файловая система, использующаяся ядром при начальной загрузке". Проще говоря загрузчик загружает в память ядро и образ initramfs, и начальная загрузка системы происходит из этого образа. Соответственно чем меньше лишнего в этом образе - тем быстрее будет загружаться система и тем меньше она будет требовать памяти на начальном этапе.

Прежде чем продолжить нужно сделать два уточнения. Первое: все описанные здесь инструкции справедливы не только для Debian, но и для большинства его "потомков". Второе: да, конечно, если пересобрать ядро руками то можно вообще отказаться от initramfs, но не все и не всегда хотят при каждом обновлении заново пересобирать ядро. Поэтому лучше просто оптимизировать initramfs штатными средствами дистрибутива.

Образ initramfs создаётся утилитой update-initramfs. Пронаблюдать как создаётся образ для текущего ядра с настройками по умолчанию можно запустив создание этого образа командой:

update-initramfs -v -c -k `uname -r`

Можно заметить что сначала добавляются модули, потом минимально-необходимые базовые утилиты и потом выполняются "хуки" (hooks) - модули для update-initramfs, которые добавляют в образ различные дополнительные функции. Например хук dmsetup добавляют поддержку функционала Device Mapper, а хук fuse_utils - поддержку файловых систем, доступных через fuse.

Следует отметить что если в образе initramfs отсутствует какой-то модуль то он будет загружен позже, уже с жёсткого диска (главное чтобы набор модулей в образе позволял ядру добраться до этого жёсткого диска).

Основные настройки update-initramfs расположены в директории /etc/initramfs-tools. Начнём со списка загружаемых модулей. Чтобы загружать только нужные изменим значение параметра MODULES в файле initramfs.conf:

#MODULES=most MODULES=list

Дальше нам нужно создать список необходимых модулей. Самое просто решение тут - просто взять список уже загруженых модулей и использовать его. Список модулей храниться в файле modules. Создадим его, получив список загруженных модулей через lsmod:

lsmod | tail -n +2 | sort | awk '{print $1;}' > /etc/initramfs-tools/modules

Затем пересоздадим образ initramfs, предварительно удалив старый:

update-initramfs -v -d -k `uname -r` && update-initramfs -v -c -k `uname -r`

Желающие могут сравнить размеры файлов /boot/initrd.img-* до и после этой команды и, так сказать, "почувствовать разницу".

С модулями вобщем-то разобрались. Переходим к хукам. Системные хуки хранятся в директории /usr/share/initramfs-tools/hooks, пользователь (вернее администратор системы) может определять свои хуки в директории /etc/initramfs-tools/hooks (по умолчанию в ней пусто).

Чтобы понять какой хук за что отвечает проще всего выяснить какому пакету он принадлежит и читать документацию на этот пакет. Получить список пакетов-владельцев хуков можно командой:

find /usr/share/initramfs-tools/hooks/ -type f -exec dpkg -S '{}' \;

К сожалению при генерации образа initramfs нельзя указать список хуков, которые надо пропустить. Поэтому единственным способом убрать лишнее из initramfs является удаление пакета, содержащего не нужный хук. Ну или удаление файла хука (однако следует помнить что в этом случае при обновлении системы он будет создан заново).

Хуки принадлежащие initramfs-tools и udev лучше не трогать. С остальными нужно разбираться по ситуации. Например если речь о сервере то вряд ли там используются какие либо файловые системы, монтируемые через fuse, а значит хуки fuse_utils И ntfs_3g явно лишние. Освободить initramfs от них можно следующим образом:

apt-get purge fuse-utils ntfs-3g && apt-get autoremove --purge && update-initramfs -v -c -k `uname -r`

Если речь идёт о рабочей станции то чаще всего поддержка Drive Mapper бывает ненужна. Как уже говорилось выше - за неё отвечает хук dmsetup, являющийся частью одноимённого пакета. В этом случае убрать его можно командой:

apt-get purge dmsetup && apt-get autoremove --purge && update-initramfs -v -c -k `uname -r`

Отдельного внимания заслуживает вопрос явной пересборки образа после внесения каких либо изменений в его конфигурацию, ведь после установки/удаления пакетов, меняющих эту конфигурацию dpkg сам вызывает update-initramfs для обновления образа. Дело в том, что dpkg запускает update-initramfs командой:

update-initramfs -u -k all

Здесь опция "-k" указывает на ядро ("all" - означает все ядра, имеющиеся в системе), а "-u" - указывает а необходимость обновить (но не пересоздать с нуля!) образ initramfs.

При обновлении образа может остаться какой-то не нужный мусор, поэтому лучше всё-таки собирать образ с нуля, что и делается командой:

update-initramfs -c -k all

То есть вместо "-u" указывается ключ "-c", указывающий на необходимость пересоздания образа с нуля. Для наглядности так же можно указывать ключ "-v" - в этом случае по ходу создания образа будет показана информация обо всех предпринимаемых действиях.

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

Приятной работы!

Источник: http://www.ylsoftware.com/news/469 

lin.in.ua

debian 8 под себя | Drupal создание поддержка оптимизация

Короче, надоело мне сидеть под минтом как под бубунтой (которой он стал после 16 apt-get upgrade). Старнные чувства закрадывались у меня. Как-будто я не в своей тарелке. Тонна ненужного мусора в виде программ которые я не юзаю... меня тошнило каждый день при включении ноута.

 

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

 

Пофайлово бекапил нужную инфу с раздела /home. Удалилось много ненужного барахла.

Форматировал все. Удалил swap, тк и так гиг не много так еще и ssd напрягается. Под систему оставил 12Gb.

 

Debian ставил с образа netinst, псевдографический инсталлер. Адаптер и инет он молодец определяет. Ставил EN-en с выключенными галочками на последней вкладке, там где выбрать DE, ssh и тд.

 

После перезагрузки инет не поднялся. Ессесно.

https://wiki.debian.org/WiFi/HowToUse

 

Сразу добавил

nano /etc/apt/sources.list deb http://ftp.debian.org/debian squeeze main contrib non-free deb-src http://ftp.debian.org/debian squeeze main contrib non-free apt-get update apt-get upgrade apt-get install aptitude sudo aptitude install sudo slim xorg openbox lxpanel tmux htop alsa-utils gdebi-core logrotate feh wicd bzip2 alsamixer doublecmd-common doublecmd-gtk chromium qupzilla midoru iceweasel links arora transmission audacious vlc openjdk-7-jre icedtea-7-plugin openjdk-7-jdk laptop-mode-tools pmount openssh-client openssh-server geany xscreensaver filezilla git libreoffice-writer libreoffice-calc php5-fpm nginx mysql-server keepassx gimp tilda unrar unzip nano /etc/default/keyboard XKBMODEL="pc105" XKBLAYOUT="us,ru" XKBVARIANT="winkeys" XKBOPTIONS="grp:caps_toggle" BACKSPACE="guess" nano ~/.xsession feh --bg-fill /home/user/Pictures/one_piece_wallpaper.jpg lxpanel & tilda & /usr/bin/xscreensaver -no-splash & synclient TapButton1=1 exec openbox

 

Кнопки Fn+Left\Right для громкости на ноуте крутил через

nano ~/.config/openbox/rc.xml <keybind key="XF86AudioLowerVolume"> <action name="Execute"> <command>amixer -c 0 set Master 3-</command> </action> </keybind> <keybind key="XF86AudioRaiseVolume"> <action name="Execute"> <command>amixer -c 0 set Master 3+</command> </action> </keybind>

 

Подсветка ноута мне так и не далась по кнопкам, ибо к девайсу имеет доступ только root. При привах для всех, группах и тд подстветку клинит на max и дальше не идет.

 

Так под рутом ок:

echo 4 > /sys/devices/platform/samsung/backlight/samsung/brightness

По блогам нашел написаную софтинку на С++. Написл – откомпилил – все равно не работает. Сорцы выложу, если комуто интересно. Суть то не меняется, нужно просто записать значение в девайс.

 

скринсейвер поставил на ctrl+alt+del

<!-- Lock with xscreensaver --> <keybind key="Control-Alt-Delete"> <action name="Execute"> <command>xscreensaver-command --lock</command> </action> </keybind>

 

Остальное потихоньку допиливаю, пока есть время.

 

Thunderbird качал с фтп. Тот что предлагает браузер не устанавливался. Качал х86_64.

 

 

Плюсы перехода очевидны: ОС только с нужными программами.

Наконец-то адекватно работает режим сна. (в минт при выходе из сна был черный экран.)

Аккум держит дольше и чаще работает в тихом режиме. В минте гудел как псих, ибо оперативку жрало непонятно что.

Опенбокс нравится. Быстро и минималистично. Xfce4 тоже хорош, для быстрого старта, но тонна ненужных программ раздражает.

16rom.com

Ускоряем debian - Русскоязычное Linux-сообщество

Debian очень хороший дистрибутив, но не всегда быстрый, под катом инструкция, как его значительно ускорить. Система с fluxbox без оптимизации грузится за 26 секунд, с оптимизацией за 11! В ходе оптимизации система будет переведена на ext4, будет новое ядро и пакеты будут собираться из исходных текстов, а так же init заменён на upstart
Предупреждение
Все действия производить с чистой системой, в случае с рабочей, есть риск всё сломать! Для данных целей рекомендуется netinstall образ При установке /boot необходимо сделать отдельным разделом, хватит 200мб и ext2
Ядро
Для данных целей нужно использовать последнее ядро (>=2.6.28) и собирать его вручную, как правильно это сделать:make menuconfig В Processor type and features -> Processor family выберите свой процессор (у меня Core 2/newer Xeon) В File systems модульно The Extended 4 (ext4) filesystem и выбрать Ext4 extended attributes Закончим конфигурирование, приступим к сборке:make-kpkg --initrd --append-to-version="-append" kernel_image kernel_headersdpkg -i ../linux*.deb Где append можно заменить на любое своё слово.
Перевод в ext4
Для начала скачаем partdemagic livecd или liveusb, загрузимся с диска. Чтоб перевести фс в ext4 (не переводите /boot в ext4!) нужно:tune2fs -O extents,uninit_bg,dir_index /dev/sdXXfsck -pf /dev/sdXX Где sdXX — нужный раздел, для просмотра списка разделов введите fdisk -l Чтобы наша система загружалась нужно сделать:mount -anano /media/sdYY/etc/fstab nano, так как он встроен в загрузочный диск. sdYY — коренной раздел. В открывшемся файле в разделах, где стал ext4 меня ext3 на ext4 Если вы перевели / в ext4, то в /media/sdYY/boot/grub/menu.lst в строчку kernel нашего ядра допишем rootfstype=ext4 и в строчку # kopt= тоже самое. Теперь можно с чистой совестью перезагружаться в систему с ext4
apt-build
Это программа, благодаря которой можно устанавливать пакеты из исходных кодов, для установки введите aptitude install apt-build, после установки будет предложено выбрать ваш процессор, в интернете можно найти дополнительные параметры для вашего процессора, мой файл настроек (/etc/apt/apt-build.conf):build-dir = /var/cache/apt-build/buildrepository-dir = /var/cache/apt-build/repositoryOlevel = -O2mtune = -mtune=core2options = "-pipe -fomit-frame-pointer"make_options = "-j4 " Для начала пересоберём уже установленный пакеты, для этого:dpkg --get-selections | awk '{if ($2 == "install") print $1}' > /etc/apt/apt-build.listecho "Package: *Pin: release o=apt-buildPin-Priority: 990" >> /etc/apt/preference Последнее было сделано для того, чтоб при обновление собранные пакеты не заменились пакетами из репозитория. Для пересборки всего вводим apt-build world и когда пишет, что для какой0то программы нет исходных текстов, удаляем её из /etc/apt/apt-build.list

Позже пакеты устанавливать через apt-build install, обновлятся через apt-build upgrade, более подробная информация в man apt-build

Замена init на upstart
upstart работает быстрее, чем init, для замены введите:apt-build install upstart

PS в момент написания статьи собирался kde4, без kde, но с fluxbox система грузится 11 секунд, против 26 в такой же системе, но без оптимизации. Всё работает быстрее, заметно даже на глаз =)

Оригинал на welinux.ru

ru-linux.livejournal.com

Debian - Оптимизация производительности Apache

Если вы решили увеличить производительность Apache (а на сегодняшний день это – один из самых популярных веб-серверов Сети), то вам пригодятся те советы, которые мы собираемся дать в этой статье.

1.    Работайте только с действительно нужными вам модулями, а все остальное, сразу же и не задумываясь, удаляйте! Дело в том, что в этом случае вы сразу же уменьшите потребления памяти, что и повлечет за собой увеличение скорости. Второй вариант – скомпилировать модули как DSO, при помощи apxs (в apache 1) и apxs 2 в (apache 2), что сократить скорость работы примерно на 11-15%.

2.    Правильно выберите MPM (Multi-processing module). Так как главная задача MPM – прослушивать порты, соответствующие установленным требованиям по безопасности, количеству свободной памяти или наличии поддержки потоков в ОС, то следует ограничить выбор на двух MPM – worker и prefork.

Worker – переносит обслуживание запросов в отдельный поток.

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

Чтобы сменить MPM, вы должны будете перекомпилировать  apache при помощи source-based, что сразу же улучшит скорость работы всей системы.

3.    Настройка DNS запросов. Во-первых, включите директиву «HostnameLookups» . Во-вторых, сделайте так, чтобы Allow from и Deny From директивах использовались не доменные имена, а IP-адреса, чтобы избавить apache от двойных запросов, которые он будет делать для того, чтобы проверять достоверность данных клиента.

4.    Установить AllowOverride директиву в режим «None», иначе  apache будет открывать (или пытаться сделать это)  все htaccess-файлы в каждой посещаемой директории, а так же файлы выше ее:

Потому если вам нужен .htaccess только какой-нибудь одной директории, то поступите так:

Так же нужно отметит, что при включении для директории:

FollowSymLinks - сервер всегда будет следовать по символическим ссылкам в данной директории;

SymLinksIfOwnerMatch – сервер будет отслеживать ссылки только  в случае если данные владельца директории совпадают с данными владельца директории, на которую указывает ссылка.

5.    Так же откажитесь от Content Negotiatio.

6.    Правильно задайте параметры MaxClients, определяющий количество одновременно обрабатываемых запросов. Найдите для себя оптимальное значение MaxClients, чтобы обслуживать оптимальное число клиентов. При этом следует помнить, что для статических файлов apache требуется 2-3 Мб на процесс, для динамики - 16-32 Мб.

7.    Установка  MinSpareServers, MaxSpareServers, и StartServers – а она должна привести к тому, чтобы apache отказался от создания 4-х потоков/процессов  в 1-у секунду, что позволит не перегружать систему даже при максимальном числе клиентов.

8.    Измените значение MaxRequestsPerChild при определении того, сколько запросов должен обработать 1  дочерний поток/процесс до своего завершения. Помните, что это значение (по умолчанию) выставлено как «ноль», потому лучше изменить его на 1000 и больше, что избавит вас от утечки памяти в дочерние процессы, что имеет огромное значение при использовании  нестабильной версию PHP.

9.    Активируйте KeepAlive и KeepAliveTimeout, которые в отключенном режиме создают отдельный поток для каждого размещенного на html-странице изображения, и «тормозит» страницы с большим числом изображений большого размера.  В случаях с download-серверами  KeepAlive лучше отключить, что сразу же избавит вас от долго ожидания перед закрытием сервером соединений.

10.    Используйте сжатие, что позволит вам уменьшить количество передаваемого трафика на 75 процентов. И делайте это без всякой опаски, так как на сегодня все новейшие клиентские программы и сервера поддерживают HTTP-сжатие  в стандарте HTTP/1.1. А постарастья сжать следует видео, музыку, и все jpg, gif png файлы.

Следует отметить, что параметры кэширование задаются директивами модуля mod_deflate. При этом не стоит устанавливать степень сжатия gzip более 4 или 5, так как это увеличит время CPU, и снизит общий эффект.

11.    И конечно же не забывайте устанавливать на статических файлах  (для этого применяется модуль mod_expires)  Expires заголовки. Или закэшируйте его на клиенте в том случае, если файл не изменяется, что освободит сервер от лишних запросов, а клиент получит более быстро загружаемую страницу.

На новых VPS часто появляются проблемы с производительность работы Apache. Дело в том, что конфигурационные файлы которые создаются после установки Apache далеко не оптимизированы.

Симптомы плохой настройки могут быть работа VPS с обжорством RAM на 100% или CPU на 100%. После выполнения команды top или htop(если не работает выполните apt-get install htop) на первых строках будет процесс apache.

Я покажу оптимальный конфиг. файл для VPS

Оперативная память: 512 MB

Процессор: 2267 MHz

ОС: Debian 5

# # Timeout: The number of seconds before receives and sends time out. # Timeout 300 # # KeepAlive: Whether or not to allow persistent connections (more than # one request per connection). Set to "Off" to deactivate. # KeepAlive On # # MaxKeepAliveRequests: The maximum number of requests to allow # during a persistent connection. Set to 0 to allow an unlimited amount. # We recommend you leave this number high, for maximum performance. # MaxKeepAliveRequests 100 # # KeepAliveTimeout: Number of seconds to wait for the next request from the # same client on the same connection. # KeepAliveTimeout 15 ## ## Server-Pool Size Regulation (MPM specific) ## # prefork MPM # StartServers: number of server processes to start # MinSpareServers: minimum number of server processes which are kept spare # MaxSpareServers: maximum number of server processes which are kept spare # MaxClients: maximum number of server processes allowed to start # MaxRequestsPerChild: maximum number of requests a server process serves <ifmodule mpm_prefork_module=""> StartServers 3 MinSpareServers 3 MaxSpareServers 10 MaxClients 100 MaxRequestsPerChild 0 </ifmodule> # worker MPM # StartServers: initial number of server processes to start # MaxClients: maximum number of simultaneous client connections # MinSpareThreads: minimum number of worker threads which are kept spare # MaxSpareThreads: maximum number of worker threads which are kept spare # ThreadsPerChild: constant number of worker threads in each server process # MaxRequestsPerChild: maximum number of requests a server process serves <ifmodule mpm_worker_module=""> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </ifmodule>

В этом файле настроек можно поменять следующие параметры:

Еще записи по теме

live-code.ru

Yellow Leaf - Статьи - Оптимизация initramfs в Debian

Debian Linux это один из самых популярных современных дистрибутивов, являющийся кроме того "родителем" целого ряда других дистрибутивов, в частности Ubuntu, Linux Mint и проч. Популярность Debian завоевал благодаря своей дружественности к пользователю.

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

Далее будет предпринята попытка максимально подробно разобрать способ генерации initramfs в Debian и показать как можно его оптимизировать.

Итак, что же такое initramfs? Согласно википедии это "временная файловая система, использующаяся ядром при начальной загрузке". Проще говоря загрузчик загружает в память ядро и образ initramfs, и начальная загрузка системы происходит из этого образа. Соответственно чем меньше лишнего в этом образе - тем быстрее будет загружаться система и тем меньше она будет требовать памяти на начальном этапе.

Прежде чем продолжить нужно сделать два уточнения. Первое: все описанные здесь инструкции справедливы не только для Debian, но и для большинства его "потомков". Второе: да, конечно, если пересобрать ядро руками то можно вообще отказаться от initramfs, но не все и не всегда хотят при каждом обновлении заново пересобирать ядро. Поэтому лучше просто оптимизировать initramfs штатными средствами дистрибутива.

Образ initramfs создаётся утилитой update-initramfs. Пронаблюдать как создаётся образ для текущего ядра с настройками по умолчанию можно запустив создание этого образа командой:

update-initramfs -v -c -k `uname -r`

Можно заметить что сначала добавляются модули, потом минимально-необходимые базовые утилиты и потом выполняются "хуки" (hooks) - модули для update-initramfs, которые добавляют в образ различные дополнительные функции. Например хук dmsetup добавляют поддержку функционала Device Mapper, а хук fuse_utils - поддержку файловых систем, доступных через fuse.

Следует отметить что если в образе initramfs отсутствует какой-то модуль то он будет загружен позже, уже с жёсткого диска (главное чтобы набор модулей в образе позволял ядру добраться до этого жёсткого диска).

Основные настройки update-initramfs расположены в директории /etc/initramfs-tools. Начнём со списка загружаемых модулей. Чтобы загружать только нужные изменим значение параметра MODULES в файле initramfs.conf:

#MODULES=most MODULES=list

Дальше нам нужно создать список необходимых модулей. Самое просто решение тут - просто взять список уже загруженых модулей и использовать его. Список модулей храниться в файле modules. Создадим его, получив список загруженных модулей через lsmod:

lsmod | tail -n +2 | sort | awk '{print $1;}' > /etc/initramfs-tools/modules

Затем пересоздадим образ initramfs, предварительно удалив старый:

update-initramfs -v -d -k `uname -r` && update-initramfs -v -c -k `uname -r`

Желающие могут сравнить размеры файлов /boot/initrd.img-* до и после этой команды и, так сказать, "почувствовать разницу".

С модулями вобщем-то разобрались. Переходим к хукам. Системные хуки хранятся в директории /usr/share/initramfs-tools/hooks, пользователь (вернее администратор системы) может определять свои хуки в директории /etc/initramfs-tools/hooks (по умолчанию в ней пусто).

Чтобы понять какой хук за что отвечает проще всего выяснить какому пакету он принадлежит и читать документацию на этот пакет. Получить список пакетов-владельцев хуков можно командой:

find /usr/share/initramfs-tools/hooks/ -type f -exec dpkg -S '{}' \;

К сожалению при генерации образа initramfs нельзя указать список хуков, которые надо пропустить. Поэтому единственным способом убрать лишнее из initramfs является удаление пакета, содержащего не нужный хук. Ну или удаление файла хука (однако следует помнить что в этом случае при обновлении системы он будет создан заново).

Хуки принадлежащие initramfs-tools и udev лучше не трогать. С остальными нужно разбираться по ситуации. Например если речь о сервере то вряд ли там используются какие либо файловые системы, монтируемые через fuse, а значит хуки fuse_utils И ntfs_3g явно лишние. Освободить initramfs от них можно следующим образом:

apt-get purge fuse-utils ntfs-3g && apt-get autoremove --purge && update-initramfs -v -c -k `uname -r`

Если речь идёт о рабочей станции то чаще всего поддержка Drive Mapper бывает ненужна. Как уже говорилось выше - за неё отвечает хук dmsetup, являющийся частью одноимённого пакета. В этом случае убрать его можно командой:

apt-get purge dmsetup && apt-get autoremove --purge && update-initramfs -v -c -k `uname -r`

Отдельного внимания заслуживает вопрос явной пересборки образа после внесения каких либо изменений в его конфигурацию, ведь после установки/удаления пакетов, меняющих эту конфигурацию dpkg сам вызывает update-initramfs для обновления образа. Дело в том, что dpkg запускает update-initramfs командой:

update-initramfs -u -k all

Здесь опция "-k" указывает на ядро ("all" - означает все ядра, имеющиеся в системе), а "-u" - указывает а необходимость обновить (но не пересоздать с нуля!) образ initramfs.

При обновлении образа может остаться какой-то не нужный мусор, поэтому лучше всё-таки собирать образ с нуля, что и делается командой:

update-initramfs -c -k all

То есть вместо "-u" указывается ключ "-c", указывающий на необходимость пересоздания образа с нуля. Для наглядности так же можно указывать ключ "-v" - в этом случае по ходу создания образа будет показана информация обо всех предпринимаемых действиях.

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

Приятной работы!

www.ylsoftware.com


Prostoy-Site | Все права защищены © 2018 | Карта сайта