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

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

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

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

Настройка рейтов сервера CS

, Настройка соединения между клиентом и сервером
Статус пользователя STR@TEG
сообщение 28.6.2010, 9:19
Сообщение #1
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

Более актуальная тема по настройке рейтов находиться здесь (кликабельно).



1.
loss - количество потерянных пакетов из последних 100. Теряются пакеты из-за перегрузки канала (роутеров) между сервером и клиентом, либо из-за неудовлетворительного состояния линии связи между сервером и клиентом. Проблема "железная" и зачастую трудно устранимая.
choke - количество пакетов, отправка которых была задержана сервером, чтобы не превысить лимит полосы, устанавливаемый rate, sv_minrate и sv_maxrate (сервер генерирует слишком много трафика). Проблема в настройках HLDS, решается установкой высокого значения переменной sv_minrate (100000 например) и перезапуском сервера.


2.
choke - это количество пакетов из последних 100, которые были задержаны для конкретного клиента (не для всех), чтобы не превысить скорость передачи, которая у этого клиента задана в переменной rate. На клиентское значение rate сервер накладывает свои ограничения: клиентский rate не может быть больше sv_maxrate и не может быть меньше sv_minrate, именно в такой последовательности, сначала на "не больше", потом на "не меньше". На sv_minrate и sv_maxrate в свою очередь тоже накладываются ограничения: sv_maxrate не может быть больше 20000 (тут надо понимать, что в переменную вы можете поставить сколько угодно, но при расчетах значения выше 20000 будут игнорироваться), sv_minrate не может быть меньше 1000.

Значения sv_maxrate выше 20000 бессмысленны, это верно. А вот эффект от sv_minrate "100000" будет. Иначе говоря, если на сервере поставить sv_maxrate 20000 и sv_minrate "100000", то сервер будет пытаться "завернуть" трафик в канал ~100кбайт/сек для каждого клиента.


3.
Оптимальных настроек на все случаи жизни скорее всего нет. Если мы говорим о LAN'е (sv_lan "1"), то в этом режиме клиентский rate (а также sv_minrate и sv_maxrate) не учитывается вообще, вместо него для всех клиентов используется значение sv_lan_rate.

Оптимальность настройки рэйтов определяется по наличию choke. Есть choke -> повышаем sv_minrate (в случае с sv_lan "0") или sv_lan_rate (в случае с sv_lan "1").

Если смотреть на цифры, то:
20000 байт/сек должно хватать для классических серверов.
50000 байт/сек - для мяса типа ЗМ.
Можно поставить 100000 и вообще не париться насчет choke.

Про sv_minupdaterate и sv_maxupdaterate (если кто забыл - это минимальная/максимальная частота отсылки пакетов-обновлений от сервера к клиенту):

sv_minupdaterate 30-60. 30 -"разумный минимум чтобы не лагало". Больше 60 ставить не стоит, потому что некоторые играют на 60 FPS. Отсылать им лишние обновления незачем.

sv_maxupdaterate 50-101. 101 - для классических серверов, где важна стрельба. 50 - для мяса. Кстати, низкий updaterate заметно снижает нагрузку на процессор (по моим опытам, при поднятии апдейтрэйта у всех игроков с 30 до 101, загрузка ядра, на котором висел HLDS, выросла с 40% до 60%)

Лучше чтобы между значениями sv_minupdaterate и sv_maxupdaterate был интервал, чтобы дать клиенту свободу выбора. И не надо менять клиентский cl_updaterate вручную с помощью плагинов - не всем игрокам это нравится.


4.
Мое видение "нормальных рэйтов" в конфиге (при sv_lan "0"):
Для мяса:
* sv_minrate "100000"
sv_minupdaterate "30"
sv_maxupdaterate "60"


Для классики:
* sv_minrate "100000"
sv_minupdaterate "30"
sv_maxupdaterate "101"


© berq, он же Crock
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя LaFA
сообщение 12.7.2010, 9:02
Сообщение #2


Стаж: 16 лет

Сообщений: 4505
Благодарностей: 3256
Полезность: 793

Код
sv_maxrate 20000 (эта цыфра может быть любой, так как минрейт все равно выше)
sv_minrate 50000 (обеспечит loss и choke - 0, даже если все 32 человека на одном маленьком участке)
sv_maxupdaterate 20 (чтоб не ограничивать игрока)
sv_minupdaterate 55 (так как фпс выше 60 мало у кого будет)
zombie - deathrun

Код
sv_maxrate 25000
sv_minrate 25000 (обеспечит loss и choke в пределах 5-10,в масовках)
sv_maxupdaterate 20 (чтоб не ограничивать игрока)
sv_minupdaterate 101 (максимальный фпс в кс 101)
класик

мой вариант, это если и-нет не ограничен.

Отредактировал: LaFA1702, - 12.7.2010, 9:16
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 12 раз
   + Цитировать сообщение
artemkyz
сообщение 18.4.2012, 7:02
Сообщение #3
Стаж: 15 лет

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

Loss — число, которое показывает, сколько пакетов было потеряно во время передачи от сервера к Вам. Обычно оно говорит о несоответствии скорости вашего входящего канала и серверного исходящего. Чтобы принять избыточную информацию, которую сервер пытается вам передать, необходимо уменьшить объем этой информации.
Это означает, что пока Ваши команды, которые идут на сервер, проходят по определённому пути (иногда им необходимо пройти большое количество сетей), они «теряются» на просторах сети. Loss очень часто возникает при использовании беспроводного соединения. Loss также нельзя контролировать – это просто дерьмовое соединение и с этим ничего не поделать.

Что такое sv_maxrate?
sv_maxrate - максимальная пропускная способность сетевого канала сервера с учетом клиентской стороны.

Так как мы живем не в каменном веке, то у всех уже давно есть кабельный интернет, что на сервере(хостинги, домашние), что у клиентов(игроков).
Исходя из этого получается что клиенты выставляют зачастую себе rate 25000, тогда и сервер должен поддерживать такую скорость клиента, поэтому выставляем sv_maxrate 25000.

Что делать со значением sv_minrate?

sv_minrate - минимальная пропускная способность сетевого канала сервера с учетом клиентской стороны.

Какое значение выставить?
Т.к. очень долго просидел на разных значениях, но они всегда были <25000, разницы я не почувствовал что от 5000, что от 2500, что от 10000.
Но при этом, появляется choke.
Что такое choke - это потери пакетов на просторах интернета. Чаще всего он возникает в начале раунда (там он спокойно доходит до 100), либо когда начинается бойня между командами(тут значение choke по-разному себя ведет).
Как избавиться от choke?
Прописываем sv_minrate 50000. Этим значением мы заставляем клиента(игрока) работать стабильно на rate 25000 без права выбора на меньшее.

С этим мы разобрались, я думаю многие форумчане, сами проводили тесты и тоже пришли к выводу, что значения должны быть:
sv_maxrate 25000
sv_minrate 50000


Идем дальше.
В нашем любимом конфиге сервера есть еще два значения, это sv_minupdaterate и sv_maxupdaterate.

sv_minupdaterate/sv_maxupdaterate - минимальное/максимальное число обновлений, которое сервер может отсылать клиенту в секунду. Соответственно это граничные значения, которые клиент может требовать у сервера.
Насколько я понял, значения эти зависят от нашего любимого fps сервера. (если кто то подробно расскажет каким образом, буду очень благодарен, да и остальным это будет полезно узнать).
Опять же клиенты ставят себе значения cl_updaterate 101. Т.е. на сервере, чтобы клиент не лагал и не орал что стрельба гомно, должно быть значение sv_maxupdaterate 101.
Но при этом сервер должен держать (как я понял, возможно неправ) 1000 стабильных фпс.
cl_cmdrate - число раз в секунду которое клиент информирует сервер о своих действиях. с этим параметром вроде все ясно, но как на стороне сервера он регулируется - я не знаю.
sv_minupdaterate - если следовать логике выставления предыдущих двух значений (sv_minrate, sv_maxrate), то должны поставить 202.
Но даже при значении 101 на сервер происходит какая то не понятная фигня.
Поэтому, я ставлю sv_minupdaterate 20.

Подводим итоги.
Оптимальные настройки рейтов, при которых нет потерь, ошибок и т.д.:
sv_maxrate 25000
sv_minrate 50000
sv_maxupdaterate 101
sv_minupdarate 20

при стабильном
sys_ticrate 1100 на линуксе

На сервере с 20 игровыми слотами ставим

sv_minrate 100000 - избавляемся от choke
sv_maxrate 25000
sv_minupdaterate 20
sv_maxupdaterate 70 - снижаем нагрузку как на сам сервер, так и на канал интернета

Максимальные рейты будут иметь смысл только на серверах для mix и clanwar, где колличество игроков не привышает 10 человек, а пинг за частую, не превышает 10мс.

sv_minrate 100000 - избавляемся от choke
sv_maxrate 25000
sv_minupdaterate 20
sv_maxupdaterate 101
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 8 раз
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: