Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Какие параметры ядра лучше подходят под мин нагрузку и какой "старости" ядро использовать?

Статус пользователя Hebeda
сообщение 27.12.2012, 22:24
Сообщение #1
Стаж: 14 лет

Сообщений: 130
Благодарностей: 4
Полезность: 33

Приветствую всех страждущих.

Т.к. недавно начал постепенно осваивать Gentoo 12.1, возник очевидный вопрос о том, как лучше собрать ядро. Цели достаточно прозрачны - минимальная нагрузка на процессор от серверов. Под минимальной - я подразумеваю, хм, примерно 15% от одного сервера при 32/32 metamod/amxmodx с минимальным набором плагинов. Сейчас при 0 игроках - нагрузка 4%. При 32 - от 30% до 100% [редко больше 50%]. А серверов собственно несколько, все паблики с минимальным набором плагинов - личные. Стоят сейчас на Intel Core i7-2600 с отключённым HT (HyperThreading) [в bios]. Процессы балансятся между ядрами (это сделано в силу того - что чем больше пакетов шлётся в адрес сервера - тем больше нагрузка, соответственно некоторые сервера в результате мини-ддоса грузят CPU больше обычного) и я всецело надеюсь на помощь BFS и BFQ в стабильности их работы. Бывает такое, что сервер начинает нагружать процессор на 50%, а то и больше, вот тогда, если включить HT - балансировка будет полезна. Такое случается только, когда сервер получает много пакетов (валидных, в целом) - dproto при этом флудит. Запросы фильтруются iptables, но в разумных пределах.
Все сервера запущены с такими параметрами:
Код
nice -n -20 ./hlds_run -game cstrike +port ... +maxplayers 32 +ip ... +map de_dust2 -pingboost 1
Хочу заметить - что все запущенны с дефолтным sys_ticrate - то бишь 100.0. Большего для пабликов мне не нужно. И вся моя оптимизация основана на том, что сервера потребляют <=100 FPS и больше им не потребуется.

Теперь к ядру. За основу взял ядро 3.7.1-pf. Выбор основан на 1) Новое = лучше (знаю, что спорно - поэтому спрашиваю - какой "старости" ядро использовать? Может лучше 2.6.32?) b) PF - ядро пропатченное с BFQ, BFS, 10000 HZ и прочий тюнинг для производительности. Касательно нагрузки на процессор речи нет, поэтому я думаю, что ядро это вообще использовать не стоит, но ничего лучше у меня под рукой нет или же я просто не знаю, что есть. Ядро скомпилировано и установлено при помощи утилиты genkernel.
Можно пожертвовать "прыганьем" FPS и отсутствием возможности сделать более 100 FPS. Меня это устраивает. Главное - минимальная нагрузка на ядра.

Мои главные вопросы это:

1. Какой "старости" ядро стоит использовать? Если можно - конкретную версию. (2.6.16 например)
2. Какие параметры ядра стоит смотреть, изучать, тестировать для HLDS или для понижения нагрузки от процессора?
3. Что из этих параметров нужно включить, а что выключить, какое значение этих параметров лучше всего, чтобы получить минимальную нагрузку на ядра от серверов?
Написал название и текущее значение в моём конфиге.

General setup:
Tickless System (Dynamic Ticks) # CONFIG_NO_HZ is not set
High Resolution Timer Support CONFIG_HIGH_RES_TIMERS=y

Processor type and features:
HPET Timer Support CONFIG_HPET_TIMER=y
Preemption Model CONFIG_PREEMPT_NONE=y
Timer Frequency (HZ) CONFIG_HZ_100=y


4. Какой -pingboost , по вашему мнению наиболее подходит для минимальной нагрузки на процессор - в частности для ОС Gentoo? Сейчас поставлен 1. По нагрузке мало отличается от 3.
5. Какое ядро взять за основу для минимальной нагрузки, в частности для Gentoo?

Также буду благодарен c0rax, если он даст конфиг от своих оптимизированных ядер, дабы посмотреть параметры. Т.к. ссылки в соответствующей теме не актуальны.

Сам конфиг находится тут. Ниже его часть - которую я причисляю к части того, что может помочь в уменьшении нагрузку на процессор.
tuned1.conf
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86 3.7.1-pf Kernel Configuration
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
CONFIG_X86=y
CONFIG_INSTRUCTION_DECODER=y
CONFIG_OUTPUT_FORMAT="elf32-i386"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_MMU=y
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_ARCH_HAS_CPU_RELAX=y
CONFIG_ARCH_HAS_DEFAULT_IDLE=y
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
CONFIG_ARCH_HAS_CPU_AUTOPROBE=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
# CONFIG_ZONE_DMA32 is not set
# CONFIG_AUDIT_ARCH is not set
CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_X86_32_SMP=y
CONFIG_X86_HT=y
CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
CONFIG_ARCH_CPU_PROBE_RELEASE=y
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_HAVE_IRQ_WORK=y
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_EXTABLE_SORT=y

#
# General setup
#
CONFIG_SCHED_BFS=y
CONFIG_EXPERIMENTAL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_CROSS_COMPILE=""
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_BZIP2=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_HAVE_KERNEL_XZ=y
CONFIG_HAVE_KERNEL_LZO=y
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
# CONFIG_KERNEL_XZ is not set
# CONFIG_KERNEL_LZO is not set
CONFIG_DEFAULT_HOSTNAME="(none)"
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
# CONFIG_FHANDLE is not set
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_AUDIT_WATCH=y
CONFIG_AUDIT_TREE=y
# CONFIG_AUDIT_LOGINUID_IMMUTABLE is not set
CONFIG_HAVE_GENERIC_HARDIRQS=y

#
# IRQ subsystem
#
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_IRQ_DOMAIN=y
# CONFIG_IRQ_DOMAIN_DEBUG is not set
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_SPARSE_IRQ=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_KTIME_SCALAR=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
CONFIG_GENERIC_CMOS_UPDATE=y

#
# Timers subsystem
#
CONFIG_TICK_ONESHOT=y
# CONFIG_NO_HZ is not set
CONFIG_HIGH_RES_TIMERS=y

#
# CPU/Task time and stats accounting
#
CONFIG_TICK_CPU_ACCOUNTING=y
CONFIG_IRQ_TIME_ACCOUNTING=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_TASKSTATS=y
CONFIG_TASK_DELAY_ACCT=y
CONFIG_TASK_XACCT=y
CONFIG_TASK_IO_ACCOUNTING=y


Отредактировал: Hebeda, - 28.12.2012, 0:04
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя нуб2
сообщение 27.12.2012, 23:33
Сообщение #2


Стаж: 14 лет

Сообщений: 2367
Благодарностей: 1209
Полезность: 1014

Цитата
10000 HZ

авторы рекомендут 3к ставить
а остальное пусть Коракс отвечает, раз просят :3
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Hebeda
сообщение 27.12.2012, 23:36
Сообщение #3
Стаж: 14 лет

Сообщений: 130
Благодарностей: 4
Полезность: 33

Цитата(нуб2 @ 28.12.2012, 0:33) *
авторы рекомендут 3к ставить
а остальное пусть Коракс отвечает, раз просят :3

Насколько я понял, визуальный эффект от 1000+ HZ будет стабильность FPS при FPS = 1000. Мне же нужно только 100. Поэтому я выставил 100. Прошу, очень прошу =)

Отредактировал: Hebeda, - 27.12.2012, 23:39
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя c0rax
сообщение 28.12.2012, 15:40
Сообщение #4


Стаж: 18 лет

Сообщений: 1077
Благодарностей: 530
Полезность: 884

В таком случае, для тебя скорее самым оптимальным вариантом будет 300Hz.
И еще стоит UKSM в ядре включить.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Hebeda
сообщение 28.12.2012, 15:49
Сообщение #5
Стаж: 14 лет

Сообщений: 130
Благодарностей: 4
Полезность: 33

Цитата(c0rax @ 28.12.2012, 16:40) *
В таком случае, для тебя скорее самым оптимальным вариантом будет 300Hz.
И еще стоит UKSM в ядре включить.

Поставил 300. Но если включить Dynamic Ticks, то это не имеет действие, правильно? UKSM включил, правда к процессору это вроде не относится. Что например по поводу PREEMPTION - стоит включать (насколько понимаю это прежде всего для десктопов) - или оставить то, что советуют для серверов? Конечно хотелось бы советов более близких к задаче =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя c0rax
сообщение 28.12.2012, 23:33
Сообщение #6


Стаж: 18 лет

Сообщений: 1077
Благодарностей: 530
Полезность: 884

Цитата(Hebeda @ 28.12.2012, 15:49) *
Поставил 300. Но если включить Dynamic Ticks, то это не имеет действие, правильно?

Dynamic Ticks - отключить
Цитата(Hebeda @ 28.12.2012, 15:49) *
Что например по поводу PREEMPTION - стоит включать (насколько понимаю это прежде всего для десктопов) - или оставить то, что советуют для серверов? Конечно хотелось бы советов более близких к задаче =)

No PREEMPTION (Server)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
gentoos
сообщение 29.12.2012, 0:40
Сообщение #7
Стаж: 13 лет

Сообщений: 671
Благодарностей: 54
Полезность: 0

Цитата(c0rax @ 29.12.2012, 0:33) *
Dynamic Ticks - отключить

No PREEMPTION (Server)

Привет,можешь мануал подкинуть для centos 6.3 minimal для пересборки ядра? ресурсов не жалко,хочу максимально стабилизировать 1000 fps.
P.S. xeon e5645 x2
Извиняюсь за оффтоп.

Отредактировал: gentoos, - 29.12.2012, 0:42
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Hebeda
сообщение 29.12.2012, 1:27
Сообщение #8
Стаж: 14 лет

Сообщений: 130
Благодарностей: 4
Полезность: 33

Цитата(c0rax @ 28.12.2012, 23:33) *
Dynamic Ticks - отключить

No PREEMPTION (Server)

Похоже что с Dynamic Ticks отключённым, FPS часто проседает до <10 и соответственно подлагивает. При HZ = 300. (sys_ticrate 100). Нагрузка на ядро при этом 1% за 1 игроками в среднем, до 50% за 32 игрока. При 0 - 4%. sad.gif Как же добиться таких же результатов, как и на CentOS - 20% при 32 игроках и 0% при 0....

Отредактировал: Hebeda, - 29.12.2012, 1:37
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
gentoos
сообщение 29.12.2012, 1:46
Сообщение #9
Стаж: 13 лет

Сообщений: 671
Благодарностей: 54
Полезность: 0

Цитата(Hebeda @ 29.12.2012, 2:27) *
Похоже что с Dynamic Ticks отключённым, FPS часто проседает до <10 и соответственно подлагивает. При HZ = 300. (sys_ticrate 100). Нагрузка на ядро при этом 1% за 1 игроками в среднем, до 50% за 32 игрока. При 0 - 4%. sad.gif Как же добиться таких же результатов, как и на CentOS - 20% при 32 игроках и 0% при 0....

Лично у меня на центе при sys_ticrate 1100 и -pingboost 2 фпс прыгает 800-690 при 0\32 + CPU 8% + высокий приоритет , про 32\32 вообще молчу.

Отредактировал: gentoos, - 29.12.2012, 1:55
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 330863
сообщение 30.12.2012, 11:14
Сообщение #10


Стаж: 16 лет

Сообщений: 4358
Благодарностей: 1079
Полезность: 497

Hebeda,
копай в сторону сервера кс а не ядра

gentoos,
надо сначало факты класть на стол, а не некому ненужная нагрузка при 0/32
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Hebeda
сообщение 30.12.2012, 14:20
Сообщение #11
Стаж: 14 лет

Сообщений: 130
Благодарностей: 4
Полезность: 33

Цитата(330863 @ 30.12.2012, 12:14) *
Hebeda,
копай в сторону сервера кс а не ядра

Я проводил аналогичные тесты на чистом Steam сервере, правда игроками нагружал на 50% - результаты были плохие. С Dproto FPS больше, а нагрузка меньше.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя berq
сообщение 30.12.2012, 21:15
Сообщение #12
Стаж: 16 лет

Сообщений: 181
Благодарностей: 629
Полезность: 3725

Цитата(Hebeda @ 30.12.2012, 16:20) *
С Dproto FPS больше, а нагрузка меньше.

Ага, а с amxmodx фпс еще больше, а нагрузка еще меньше :)
Вы уверены что сравнение было в абсолютно одинаковых условиях? Та же мапа, те же cmdrate/updrate у игроков?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Hebeda
сообщение 30.12.2012, 22:12
Сообщение #13
Стаж: 14 лет

Сообщений: 130
Благодарностей: 4
Полезность: 33

Цитата(berq @ 30.12.2012, 21:15) *
Ага, а с amxmodx фпс еще больше, а нагрузка еще меньше :)
Вы уверены что сравнение было в абсолютно одинаковых условиях? Та же мапа, те же cmdrate/updrate у игроков?

Извиняюсь, что обидел. Dproto это мусор, после его установки сервер начал лагать, появилось 100500 уязвимостей и проц грузится на 100% постоянно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя berq
сообщение 30.12.2012, 23:12
Сообщение #14
Стаж: 16 лет

Сообщений: 181
Благодарностей: 629
Полезность: 3725

Цитата(Hebeda @ 31.12.2012, 0:12) *
Извиняюсь, что обидел. Dproto это мусор, после его установки сервер начал лагать, появилось 100500 уязвимостей и проц грузится на 100% постоянно.

Объясняю для петросянов в бронепоезде:
Любой мусор, будто метамод, дпрото, амхмодх или супермегаантиволхакантичит_версии_100500, вклинивается в хлдс/геймдлл и исполняет свой код.
При наличии "мусора" на сервере, кода будет исполнено больше, чем если бы мусора не было, а значит время выполнения будет больше, а значит на грузка на проц тоже будет больше.

Если у вас в тестах получается, что сервер с мусором работает быстрее, значит вы хреново проводите тесты.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Hebeda
сообщение 5.1.2013, 7:20
Сообщение #15
Стаж: 14 лет

Сообщений: 130
Благодарностей: 4
Полезность: 33

Цитата(berq @ 30.12.2012, 23:12) *
Объясняю для петросянов в бронепоезде:
Любой мусор, будто метамод, дпрото, амхмодх или супермегаантиволхакантичит_версии_100500, вклинивается в хлдс/геймдлл и исполняет свой код.
При наличии "мусора" на сервере, кода будет исполнено больше, чем если бы мусора не было, а значит время выполнения будет больше, а значит на грузка на проц тоже будет больше.

Если у вас в тестах получается, что сервер с мусором работает быстрее, значит вы хреново проводите тесты.

Интересно почему вы говорите с такой уверенностью.

Dproto же не "вклинивается", а патчит, заменяя код. Это равносильно тому, что мы взяли бинарник и удалили в нём в коде одну строку - копирайт. На работу это не повлияет. А т.к. дпрото закрывает уязвимости и делает мини-фильтрацию, это в итоге всё равно выйдет в минус к нагрузке. По-моему не стоит рассматриваться всё так 'плоско', что с дополнительным кодов сразу больше нагрузка. 1% для сохранения стабильности и 99% явно лучше)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 330863
сообщение 5.1.2013, 12:27
Сообщение #16


Стаж: 16 лет

Сообщений: 4358
Благодарностей: 1079
Полезность: 497

Hebeda,
это не изменение библиотек сервера, это патчинг памяти, каждый раз когда заходит игрок, библиотека дпрото ковыряет байты памяти
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 5.1.2013, 12:55
Сообщение #17
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Цитата(Hebeda @ 5.1.2013, 9:20) *
Интересно почему вы говорите с такой уверенностью.

Dproto же не "вклинивается", а патчит, заменяя код. Это равносильно тому, что мы взяли бинарник и удалили в нём в коде одну строку - копирайт. На работу это не повлияет. А т.к. дпрото закрывает уязвимости и делает мини-фильтрацию, это в итоге всё равно выйдет в минус к нагрузке. По-моему не стоит рассматриваться всё так 'плоско', что с дополнительным кодов сразу больше нагрузка. 1% для сохранения стабильности и 99% явно лучше)


То он не дает нагрузку, то дает. Вы определитесь.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: