Лаги. Тик проседает

Обсуждаем все, что относится к выделенным серверам *NIX (Unix, Linux) и Windows
Сообщение
Автор
Аватара пользователя
Alcone
Лейтенант
Лейтенант
Сообщения: 120
Зарегистрирован: 21.08.2008
Откуда: 127.0.0.1
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

#16 Сообщение 27.01.2012, 15:39

xraider писал(а):Всем доброе время суток.

Может кто-нибудь подскажет причину проседания тика на серверах?

Имеется:
  • 4-х ядерный Intel(R) Xeon(TM) CPU 2.66GHz с HT
  • 14 Гб ОЗУ
  • канал 1Гб/с
  • CentOS 5.7
  • сервера СSS v34 не более чем по 16 слотов (5-8 шт.)
Проблема:
Тик проседает до неприличных значений вроде 13-25 (от желаемого 100).
Сервера привязаны к ядрам (спасибо taskset), загрузка процессора не превышает 70 %, памяти свободно 2-4 Гб, load поднимается максимум до 7.

Буду очень рад любому указананному направлению для поиска проблем, потому что свои идеи закончились.
Подскажи как привязать процесс к ядру?
Процессор Sock775 Intel Core2 Quad-Q9400 (2,66GHz 1333MHz 6Mb)
RAM: 4Гб, linux 64 дебиан без го
Работает 5 серверов на 127 слотов
скрипт запуска:

Код: Выделить всё

#!/bin/sh
echo «Starting Cs: Source Server»
sleep 1
screen -A -m -d -S dd2 ./srcds_run -console -game cstrike -tickrate 66 -port 27019 +fps_max 0 +maxplayers 42 +map de_dust2 +ip 84.22.159.170
можешь кинуть код/команду куда и что вставлять что бы данный процесс привязать ?
Вложения
y_1950db09.jpg
скрин top'a
y_1950db09.jpg (80.7 КБ) 732 просмотра
y_1950db09.jpg
скрин top'a
y_1950db09.jpg (80.7 КБ) 732 просмотра

Аватара пользователя
cuttep
Капитан
Капитан
Сообщения: 446
Зарегистрирован: 26.06.2010
Откуда: http://www.evoplay.ru
Поблагодарили: 1 раз
Контактная информация:

#17 Сообщение 27.01.2012, 16:39

Alcone писал(а): можешь кинуть код/команду куда и что вставлять что бы данный процесс привязать ?

Код: Выделить всё

#!/bin/sh
CPU=0 # тут пишем № ядра 
echo «Starting Cs: Source Server»
sleep 1
screen -A -m -d -S dd2 taskset -c $CPU ./srcds_run -console -game cstrike -tickrate 66 -port 27019 +fps_max 0 +maxplayers 42 +map de_dust2 +ip 84.22.159.170

Аватара пользователя
Alcone
Лейтенант
Лейтенант
Сообщения: 120
Зарегистрирован: 21.08.2008
Откуда: 127.0.0.1
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

#18 Сообщение 27.01.2012, 20:12

cuttep писал(а):taskset -c $CPU
CPU=0 # тут пишем № ядра
=
CPU=0 # от 0 до 3 для 4 ядерного?
или
CPU=0 - 3 ?

Аватара пользователя
Pr0Ger
Модератор
Модератор
Сообщения: 1829
Зарегистрирован: 16.01.2009
Благодарил (а): 17 раз
Поблагодарили: 214 раз
Контактная информация:

#19 Сообщение 27.01.2012, 20:48

Alcone
указываешь номера ядер на которых запускать данный процесс
т.е. для каждого процесса srcds_run свой

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

yalamer
Нович0к
Нович0к
Сообщения: 29
Зарегистрирован: 04.12.2009
Благодарил (а): 10 раз
Поблагодарили: 6 раз
Контактная информация:

#20 Сообщение 03.02.2012, 00:18

Спасибо всем откликнувшимся. Дело стало обстоять лучше, но как всегда есть НО
Обновленная информация о машине: CPU: Intel Xeon 5030 Dempsey (2667MHz) - 2 шт. (оба двухядерные с HT)
ОС: Дебиан, ядро от NiGHt-LEshiY 3.2.2-pf.
Сервера в34, привязаны к потокам.

Вопросы:
1. Это нормально, что сервер сжирает около 90 % процессора при 16/16 игроках? (процессор - фигня или сборка сервера? или это нормально?)
2. При условии п.1 - имеет ли смысл привязывать сервер к HT-потоку?
3. Есть ли вообще смысл устанавливать для сервов приоритет RT?
4. Как жить дальше? =)

kadet89
Майор
Майор
Сообщения: 557
Зарегистрирован: 26.12.2006

#21 Сообщение 03.02.2012, 02:28

1. Нет. У меня при 16 жрет не более 10%
2. Нет. Сервак и так однопоточный. А у тебя еще низкочастотные ядра (хотя 2,66 ГГц впринципе достаточно для одного 24 слотового сервака).
Дебиан видит не реальные ядра, а виртуальные (их еще называют потоками) -> следовательно видит что второй поток этого же ядра простаивает (он ведь у тебя загружен под 0%), скидывает часть задач на него.
На уровне проца первый поток (тот, что с сервом), при этом поджимается. А ему и так производительности не хватает. Можно сказать так, что у тебя одно ядро 2.66 ГГц и если оба его потока нагрузить равномерно, то они будут как 1,33 ГГц каждое (ну может чуток больше). Т.е. твой сервак будет еще сильнее тормозить. Поэтому HT в случае однопоточных приложений лучше выключать (или заботиться чтобы второй поток ничего не нагружало, чтобы все ресурсы реального ядра отдавались первому), если этих приложений меньше чем ядер и требуется максимальная их производительность... думаю понятно описал суть..
3. Насколько я знаю, это дает сотые доли процента...
4. Как и до этого сойдет, или :suicide: ...

pihmih
Лейтенант
Лейтенант
Сообщения: 109
Зарегистрирован: 07.05.2011
Поблагодарили: 4 раза

#22 Сообщение 03.02.2012, 06:22

что такое НТ и как его отключить?

Hello-CS
Нович0к
Нович0к
Сообщения: 8
Зарегистрирован: 03.02.2012

#23 Сообщение 03.02.2012, 09:39

40 человек на паблике с вкл антивх точит 12 процентов.Так смотри у тебя одназначно что то нетак(без антивх процентов7)

BMW M6
Капитан
Капитан
Сообщения: 338
Зарегистрирован: 15.09.2011
Благодарил (а): 9 раз
Поблагодарили: 5 раз

#24 Сообщение 03.02.2012, 11:48

Это у вас хорошие результаты, у меня при 30 онлайн 35%

Hello-CS
Нович0к
Нович0к
Сообщения: 8
Зарегистрирован: 03.02.2012

#25 Сообщение 03.02.2012, 12:01

Вот оперативы бывает иногда точит при 40 онлайне около кило двести(вот это жесть)Да и еще непотеме у всех при кидание флэшки фпс проседает на 20-30 а потом норм(НА КЛИЕНТЕ)на 69

kadet89
Майор
Майор
Сообщения: 557
Зарегистрирован: 26.12.2006

#26 Сообщение 03.02.2012, 15:18

HT - Hyper Threading - технология intel, представляющая одно реальное ядро двумя виртуальными. Попробую объяснить её суть как можно понятнее.
Когда ты нагружаешь одно ядро - оно как бы нагружается не полностью, к примеру, в случаях кэш-промаха. При включенной Hyper Threading - при кэш-промахе на одном виртуальном ядре - неиспользуемые в результате ресурсы отдаются второму виртуальному ядру. Таким образом технология HT как бы выжимает из процессора больше производительности, и многопоточное приложение будет выполняться быстрее на двух таких виртуальных ядрах, нежели на одном реальном (с отключенной HT) (по словам intel производительность увеличивается до 30%).
Но, как я уже писал, оба виртуальных ядра всетаки делят ресурсы реального. Поэтому если нагрузить одно виртуальное ядро однопоточным приложением, то его производительность будет почти такая жа, как без технологии HT. Но если при этом специально или случайно загрузить второе виртуальное ядро - то первое "подожмется" и производительность приложения упадет.
Поэтому нужно обмозговывать какой из этих двух случаев у вас - и соответственно включать/отключать эту технологию.

Приведу пример:
У вас 2-х ядерный процессор i5 с поддержкой HT.
C включением HT получается 4 виртуальных ядра.
Если на данной системе у вас запущен к примеру апач и один ксс сервак - производительности которого не хватает, то с включенной HT апач будет отнимать ресурсы у сервака ксс даже тогда, когда он загружает полностью одно виртуальное ядро (под 100%)
В таком случае HT надо отключить, т.к. эта технология позволяет апачу отнимать ресурсы у ядра, которое занято обработкой ксс сервака.
Если вдруг вальва всетаки введет обещанную многопоточность - то HT нужно включить, тогда сервек своими потоками будет отнимать ресурсы проца у всего, что работает на компе, и достигнет максимума производительности.

HT отключается в биосе. НО не на всех материнских платах есть такая возможность. К примеру на ноутах ниразу не встречал такой опции...

У меня при ~45 онлайна сервак начинает лага. На некоторых мапах, где много физики, уже при 20. На статичных мапах, где физики нет вообще - без лаг тянет 64.
Последний раз редактировалось kadet89 03.02.2012, 15:29, всего редактировалось 1 раз.

pihmih
Лейтенант
Лейтенант
Сообщения: 109
Зарегистрирован: 07.05.2011
Поблагодарили: 4 раза

#27 Сообщение 03.02.2012, 15:28

Каким образом можно включать\отключать HT на OC WIN7?

kadet89
Майор
Майор
Сообщения: 557
Зарегистрирован: 26.12.2006

#28 Сообщение 03.02.2012, 15:29

HT отключается в биосе. НО не на всех материнских платах есть такая возможность. К примеру на ноутах ниразу не встречал такой опции...
Или через msconfig можно заблокировать каждое второе виртуальное ядро. Правда безусловно лучше это сделать в биосе.
Или можно не отключать, а задать соответствие всем приложениям, чтобы они не использовали второе виртуальное ядро реального ядра, на первом виртуальном ядре которого крутится сервак.

Вот в википедии хорошо описано:
http://ru.wikipedia.org/wiki/Hyper-Threading
В процессорах с использованием этой технологии каждый физический процессор может хранить состояние сразу двух потоков, что для операционной системы выглядит как наличие двух логических процессоров (англ. Logical processor). Физически у каждого из логических процессоров есть свой набор регистров и контроллер прерываний (APIC), а остальные элементы процессора являются общими. Когда при исполнении потока одним из логических процессоров возникает пауза (в результате кэш-промаха, ошибки предсказания ветвлений, ожидания результата предыдущей инструкции), то управление передаётся потоку в другом логическом процессоре. Таким образом пока один процесс ждёт, например данные из памяти, вычислительные ресурсы физического процессора используются для обработки другого процесса.

Ответить Вложения 1