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

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

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

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

2 страниц V   1 2

Нагрузка по ядрам

Статус пользователя oleg826
сообщение 29.12.2012, 15:13
Сообщение #1


Стаж: 13 лет

Сообщений: 484
Благодарностей: 126
Полезность: 510

Сейчас как то так


Как сделать чтоб оба ядра грузились а не одно? Замечаю падение фпс, не знаю в чем дело
Ubuntu 12.04

Отредактировал: oleg826, - 29.12.2012, 15:15
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Breakt
сообщение 30.12.2012, 9:21
Сообщение #2


Стаж: 16 лет

Сообщений: 149
Благодарностей: 15
Полезность: 88

Цитата(oleg826 @ 29.12.2012, 16:13) *
Сейчас как то так


Как сделать чтоб оба ядра грузились а не одно? Замечаю падение фпс, не знаю в чем дело
Ubuntu 12.04

Воспользуйся скриптом от LeXiKoN
и распредели сервера по ядрам

Отредактировал: Breakt, - 30.12.2012, 9:21
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 330863
сообщение 30.12.2012, 11:12
Сообщение #3


Стаж: 16 лет

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

oleg826,
Breakt,
HLDS однопоточное приложение, некакой там софт не заставит HLDS работать на 2 и более потоках

Отредактировал: 330863, - 30.12.2012, 11:12
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя нуб2
сообщение 31.12.2012, 1:29
Сообщение #4


Стаж: 14 лет

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

330863,
балансировка нагрузки уважаемый...

надо вспомнить, как эту шайтан машину настраивали :3
и будет перекидывать с ядра на ядро и создавать видимость равномерной нагрузки камней :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя lost855
сообщение 31.12.2012, 7:30
Сообщение #5
Стаж: 14 лет

Сообщений: 24
Благодарностей: 2
Полезность: 64

Тоже стоит 12.04. В скрипте запуска в самом начале прописал taskset -c 0,1 (где 0 - 1 ядро, 1 - 2) . Нагрузка распределяется на 2 первых ядра.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя _Skyline
сообщение 31.12.2012, 8:22
Сообщение #6


Стаж: 18 лет
Город: Екатеринбург

Сообщений: 1414
Благодарностей: 839
Полезность: 1060

Цитата(lost855 @ 31.12.2012, 11:30) *
Тоже стоит 12.04. В скрипте запуска в самом начале прописал taskset -c 0,1 (где 0 - 1 ядро, 1 - 2) . Нагрузка распределяется на 2 первых ядра.

Совсем не об этом...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя berq
сообщение 31.12.2012, 13:30
Сообщение #7
Стаж: 16 лет

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

Цитата(oleg826 @ 29.12.2012, 17:13) *
Сейчас как то так


Как сделать чтоб оба ядра грузились а не одно?

Как выше уже сказали, в хлдс игровой процесс обсчитывается одним потоком и выполнять его на более чем одном ядре нельзя.
Размазывание нагрузки на два ядра (т е поочередное исполнение потока то на одном то на другом ядре) только понизит производительность, т. к. при перепланировании на другое ядро, кэши этого ядра не содержат "свежих" данных, из-за чего проц будет чаще лазить напрямую в оперативную память, а это относительно долгая процедура. Так что ОС правильно делает, что старается держать один поток на одном ядре.

Ну и просто для справки:
Чтение из л1 кэша = 3-4 такта
Чтение из л2 кэша = 10-14 тактов
Чтение из л3 кэша = 30-40 тактов
Чтение из памяти = 80-150 тактов, зависит от частоты работы и таймингов памяти
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Breakt
сообщение 1.1.2013, 10:55
Сообщение #8


Стаж: 16 лет

Сообщений: 149
Благодарностей: 15
Полезность: 88

Цитата(330863 @ 30.12.2012, 11:12) *
oleg826,
Breakt,
HLDS однопоточное приложение, некакой там софт не заставит HLDS работать на 2 и более потоках

То есть Taskset для hl не нужен?
Если допустим я имею машину 8 ядерную я не могу распределить сервера с помощью тасксета? Я имею ввиду не один сервер на несколько ядер, а просто на каждое ядро по серверу, или это бессмысленно?

Отредактировал: Breakt, - 1.1.2013, 11:07
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 1.1.2013, 11:57
Сообщение #9


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

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


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 330863
сообщение 1.1.2013, 12:01
Сообщение #10


Стаж: 16 лет

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

Breakt,
taskset выставляет для запушенного процесса, ядра на которых ему разрешено выполнятся, HLDS же на 2 (для примера) ядрах не будет работать, поэтому он будет прыгать с ядра на ядро
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя lost855
сообщение 1.1.2013, 13:55
Сообщение #11
Стаж: 14 лет

Сообщений: 24
Благодарностей: 2
Полезность: 64

То есть лучше ставить taskset на одно ядро? Какая разница скачет он по ядрам или работает на одном. Я правильно понял?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 330863
сообщение 1.1.2013, 14:01
Сообщение #12


Стаж: 16 лет

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

Цитата(lost855 @ 1.1.2013, 13:55) *
То есть лучше ставить taskset на одно ядро? Какая разница скачет он по ядрам или работает на одном. Я правильно понял?

перечитай https://c-s.net.ua/forum/ipb.html?s=&sh...st&p=373732
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Breakt
сообщение 2.1.2013, 8:16
Сообщение #13


Стаж: 16 лет

Сообщений: 149
Благодарностей: 15
Полезность: 88

Цитата(mazdan @ 1.1.2013, 12:57) *
Breakt, смысл есть, т.к. при случайном забросе могут 2 сервера на одно ядро лечь

2 сервера на одном ядре это плохо?


Цитата(330863 @ 1.1.2013, 13:01) *
Breakt,
taskset выставляет для запушенного процесса, ядра на которых ему разрешено выполнятся, HLDS же на 2 (для примера) ядрах не будет работать, поэтому он будет прыгать с ядра на ядро

Ты меня не понял, я не распределяю один поток на 2 ядра.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 2.1.2013, 9:21
Сообщение #14


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Цитата(Breakt @ 2.1.2013, 9:16) *
2 сервера на одном ядре это плохо?

не ну если тащит машина, то нормально, наверное, у меня не тащит.


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя berq
сообщение 2.1.2013, 11:00
Сообщение #15
Стаж: 16 лет

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

Цитата(mazdan @ 1.1.2013, 13:57) *
Breakt, смысл есть, т.к. при случайном забросе могут 2 сервера на одно ядро лечь

Не могут.
Наверное рассматривалась такая ситуация:
На ядре0 выполняется хлдс1, и в очереди выполнения на этом же ядре висит хлдс2, т е "два хлдса попало на одно ядро".
Если в это время свободно другое ядро (например, ядро1), оно "сворует" хлдс2 из очереди ядра0, если это не запрещено политикой taskset.
Ну и дальше хлдс1 продолжит выполняться на ядре0, а хлдс2 начнет выполнятся на ядре1.

Если же тасксетом прибить хлдс1 и хлдс2 к ядру0, то хлдс2 будет вынужден ждать, пока хлдс1 не уйдет в слип, либо пока не кончится отведенное ему время ЦП.

Имхо, тасксет имеет смысл, если количество серверов == количеству ядер.
Если серверов больше, то ОС сама разберется, какой хлдс на каком ядре выполнять. Можно ей помочь, выставив разные приоритеты для процессов.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 2.1.2013, 11:26
Сообщение #16


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

ну я со своей виндузятной точки зрения смотрел.
Как-то долго не могу понять стал иногда пинг подскакивать на одном сервере (вплоть до фризов на 0.01-0.1 сек, на глазок).
Всё перерыл, оказалось после очередного ковыряния забыл к ядру привязать второй сервер. Т.е. #1 работает на ядро0, а #2 скачет. Вот как заскакивает на ядро0 у меня на #1 сервере фриз. При этом на сервере #2 проблем не наблюдалось. Я, наверное, дня 2 искал =\


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Breakt
сообщение 2.1.2013, 12:55
Сообщение #17


Стаж: 16 лет

Сообщений: 149
Благодарностей: 15
Полезность: 88

Цитата(berq @ 2.1.2013, 11:00) *
Не могут.
Наверное рассматривалась такая ситуация:
На ядре0 выполняется хлдс1, и в очереди выполнения на этом же ядре висит хлдс2, т е "два хлдса попало на одно ядро".
Если в это время свободно другое ядро (например, ядро1), оно "сворует" хлдс2 из очереди ядра0, если это не запрещено политикой taskset.
Ну и дальше хлдс1 продолжит выполняться на ядре0, а хлдс2 начнет выполнятся на ядре1.

Если же тасксетом прибить хлдс1 и хлдс2 к ядру0, то хлдс2 будет вынужден ждать, пока хлдс1 не уйдет в слип, либо пока не кончится отведенное ему время ЦП.

Имхо, тасксет имеет смысл, если количество серверов == количеству ядер.
Если серверов больше, то ОС сама разберется, какой хлдс на каком ядре выполнять. Можно ей помочь, выставив разные приоритеты для процессов.

У меня тачка: 8 ядер
Использую скрипт :
# Start HLDS Server
# processname: hlds
# author: LeXiKoN http://eqline.ru
# version: 0.98
Там есть функция use core == taskset
У меня около размещаю более 8 серверов, но слотов макс 24.
Я не хочу чтобы система сама раскидывала сервера по ядрам я просто беру и привязываю с помощью taskset сервер к ядру(ну или поток, в матчасте я 0). Я не привязываю один сервер на два ядра. Я лишь привязываю 2 сервера к одному ядру.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя berq
сообщение 2.1.2013, 15:51
Сообщение #18
Стаж: 16 лет

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

Цитата(mazdan @ 2.1.2013, 13:26) *
Как-то долго не могу понять стал иногда пинг подскакивать на одном сервере (вплоть до фризов на 0.01-0.1 сек, на глазок).

Насчет фризов - цифры нереальные.
При updrate 20 интервал отправки апдейтов = 50 мсек = 0.05 сек, однако фризов при таком updrate не наблюдается, играть можно.
Имхо, фризом можно назвать задержку отправки апдейта >=200 мсек.


Цитата(mazdan @ 2.1.2013, 13:26) *
Всё перерыл, оказалось после очередного ковыряния забыл к ядру привязать второй сервер. Т.е. #1 работает на ядро0, а #2 скачет. Вот как заскакивает на ядро0 у меня на #1 сервере фриз. При этом на сервере #2 проблем не наблюдалось. Я, наверное, дня 2 искал =\

Тут всё просто - на ядре0 выполняется #2, а #1 в очереди. Ядро1 свободно, однако оно не может забрать #1, т. к. он привязан к ядру0.
#1 ждет, пока #2 обсчитает фрейм (причем ждет долго, раз это стало заметно на глаз).
Если бы #1 не был привязан к ядру0, фризов бы не было.
Либо если бы оба сервера были бы привязаны к разным ядрам, фризов бы тоже не было.

Цитата(Breakt @ 2.1.2013, 14:55) *
Я не хочу чтобы система сама раскидывала сервера по ядрам

1) Откуда уверенность, что вы сделаете это лучше чем ОС?
2) Если так получается, что мощности одного ядра не хватает, чтобы переварить два сервера (например, на одном старт раунда, а но втором активная перестрелка), то в случае с привязыванием к ядру вы получите фриз на одном или на обоих серверах, а в случае без тасксета ОС перекинет один из сервов на свободное ядро, и фризов не будет вообще, либо они будут гораздо меньше.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 2.1.2013, 16:19
Сообщение #19


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Цитата
Насчет фризов - цифры нереальные.
При updrate 20 интервал отправки апдейтов = 50 мсек = 0.05 сек, однако фризов при таком updrate не наблюдается, играть можно.
ну я старался описать как это было видно на сервере.
Цитата
Если бы #1 не был привязан к ядру0, фризов бы не было.
Либо если бы оба сервера были бы привязаны к разным ядрам, фризов бы тоже не было.

Предпочитаю второй вариант т.к. мне так удобнее нагрузку смотреть + я не гружу до максимума. Типа запас всё такое. Лучше слотов меньше сделаю =)


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Breakt
сообщение 2.1.2013, 16:42
Сообщение #20


Стаж: 16 лет

Сообщений: 149
Благодарностей: 15
Полезность: 88

Цитата
1) Откуда уверенность, что вы сделаете это лучше чем ОС?
2) Если так получается, что мощности одного ядра не хватает, чтобы переварить два сервера (например, на одном старт раунда, а но втором активная перестрелка), то в случае с привязыванием к ядру вы получите фриз на одном или на обоих серверах, а в случае без тасксета ОС перекинет один из сервов на свободное ядро, и фризов не будет вообще, либо они будут гораздо меньше.

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