Компиляция ядра под игровые сервера.
Задумался над оптимизацией сервера. Решил пересобрать ядро с учетом некоторых особенностей. Ну и первое что интересовало, это CONFIG_HZ=1000. По дефолту в Debian установлено 250.
Теперь собственно процесс самой сборки ядра. Я подглядел его вот здесь:
http://forums.debian.net/viewtopic.php?f=16&t=36525 и немного вот здесь: http://www.debianway.ru/articles/how-to/latencytop-in-ubuntu-and-debian/. Кстати статья тоже очень полезная, я себе включил LATENCYTOP чтобы проанализировать сервера.
При сборке выдало ошибку:
lguest.c:34:18 error: zlib.h ….
Не находит заголовочный файл. Поэтому нужно выкачать еще и zlib1g-dev.
Также мы будем компилировать не голое ядро, а со всеми дебиановскими патчами.
Итого, подправленный алгоритм дейсвий выглядит так:
- Обновляемся:
sudo apt-get update - Устанавливаем необходимые библиотеки и инструменты:
sudo apt-get install kernel-package ncurses-dev bzip2 module-init-tools initramfs-tools procps fakeroot zlib1g-dev - Если собираете под 64 битной системой, то необходимо установить библиотеку совместимости:
sudo apt-get install ia32-libs - Качаем необходимое ядро, в моем случае:
sudo apt-get install linux-source-2.6.26 linux-tree-2.6.26 linux-patch-debian-2.6.26 - Создаем временный каталог для компиляции:
mkdir ~/kernel_compiling/ - Копируем в него архив с исходниками:
cp /usr/src/linux-source-2.6.26.tar.bz2 ~/kernel_compiling/ - И все патчи:
cp -r /usr/src/linux-support-2.6.26-2 ~/kernel_compiling/
cp -r /usr/src/kernel-patches ~/kernel_compiling/
cp -r /usr/src/linux-headers-2.6.26 ~/kernel_compiling/ - Переходим в каталог:
cd ~/kernel_compiling/ - И разворачиваем архив:
tar xjf linux-source-2.6.26.tar.bz2 - Заходим в получившуюся директорию:
cd linux-source-2.6.26/ - И копируем наш рабочий конфиг для использования в качестве базового:
cp /boot/config-$(uname -r) ./.config - Посмотреть какой процессор установлен и сколько их, можно командой:
cat /proc/cpuinfo - Далее конфигурируем ядро:
make menuconfig
и устанавливаем необходимые опции в соответствии с рекомендациями найденными по ссылке: http://kerneltrap.org/node/16431- Enable high resolution support.
- For sub architecture type select PC-Compatible.
- Processor Family (Выбирайте свой процессор)
- Enable HPET timer support (if your mobo supports, check bios)
- Preemption model select “No Forced Preemption (Server)
- Enable multi-core scheduler support and symmetric multi-processing spport.
- Disable Toshiba & Dell laptop support
- Under firmware drivers disable Dell base drive and bios support.
- Under timer frequency, set this to 1000 HZ.
- Далее очищаем рабочий каталог:
make-kpkg clean - Если у вас 2 или более ядер/процессоров, рекомендуется для использования при компиляции их всех, выставить переменную:
export CONCURRENCY_LEVEL=2 - И начинаем процесс сборки:
make-kpkg --rootcmd fakeroot --initrd --append_to_version -game.1000 --revision=g.01 kernel_image kernel_headers - После успешной сборки выходим на уровень выше:
cd .. - И устанавливаем все полученные деб пакеты:
sudo dpkg -i *.deb - Все, можно делать ребут. При старте выберите новое ядро. И наслаждайтесь результатом
Я результат заметил сразу, сервера даже пустые намного стабильнее выдавали фпс. Не было явных скачков.
































Хм, а патчи-то только копируются в папку без применения