Главная > Админам серверов > Компиляция ядра под игровые сервера.

Компиляция ядра под игровые сервера.

Задумался над оптимизацией сервера. Решил пересобрать ядро с учетом некоторых особенностей. Ну и первое что интересовало, это 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

    1. Enable high resolution support.
    2. For sub architecture type select PC-Compatible.
    3. Processor Family (Выбирайте свой процессор)
    4. Enable HPET timer support (if your mobo supports, check bios)
    5. Preemption model select “No Forced Preemption (Server)
    6. Enable multi-core scheduler support and symmetric multi-processing spport.
    7. Disable Toshiba & Dell laptop support
    8. Under firmware drivers disable Dell base drive and bios support.
    9. 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
  • Все, можно делать ребут. При старте выберите новое ядро. И наслаждайтесь результатом :)

Я результат заметил сразу, сервера даже пустые намного стабильнее выдавали фпс. Не было явных скачков.

  1. 14 Декабрь 2010 в 18:43 | #1

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

  1. Пока что нет уведомлений.