toggle
Аппаратное обеспечение или "железо"
Автор: Blakkky    22.05.2010 22:04

Один из животрепещущих вопросов, который часто поднимается на форумах всевозможных порталов, - это "сколько потянет?". Именно его я и хочу сейчас рассмотреть, развеять, так сказать, некоторые укоренившееся мифы и более-менее расставить, так сказать, все точки над i.

Сама по себе формулировка вопроса, на мой взгляд, не совсем корректна, так как обычно все-таки сервер собирается под нужды, а не существующей машине ищется то или иное применение. Поэтому я и буду рассматривать именно сборку конфигурации сервера, а уже выводы о том, сколько потянет оставляю читателям делать самостоятельно. Так же следует помнить, что максимальное количество онлайна чаше всего зависит не от конфигурации самого железа, а от сборки сервера. Приведенные ниже конфигурации составлялись из расчета на коммерческие сборки (l2f-ccp, l2phoenix, l2j-scoria и другие), хотя бы слегка оптимизированные под высокий онлайн.

В качестве потенциальных целей, под которые будем собирать сервер, выделим сервер для локальной сети (небольшая домовая сеть, "для своих", ожидаемый онлайн не более 200-300 человек), сервер начального уровня (большая домовая сеть, или сервер с доступом из интернета, ожидаемый онлайн не более 500-800 человек), сервер для коммерческого проекта (машина под комплекс из 2-3 серверов или под один сервер с суммарным онлайном более 1500 человек). В данных формулировках под онлайном имеется ввиду количество играющих одновременно персонажей (зашедших в игру клиентом или ботом, но без оффлайн-торговцев). Также, конфигурации будут составляться из расчета, что сервер выделенный, и кроме непосредственно игрового сервера, на нем больше не выполняются никакие задачи (т.е. все ресурсы сервера будут расходоваться на работу сервера баз данных и непосредственно логин и гейм-сервера игры).

* На всякий случай, хотел бы отметить, что даже просмотр интернет-страниц посредством браузера может существенно пошатнуть стабильность работы сервера (для примера, понаблюдайте, что происходит с потреблением процессора и памяти, при запуска FireFox-а и просмотре в нем страниц с флеш-баннерами), не говоря уже об загрузке/раздаче торрентов или, не дай бог, запуска клиента игры на серверной машине.

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

Также следует помнить, что серверные решения на базе windows потребляют немного больше ресурсов, нежели на базе unix. Это следует учитывать, выбирая конфигурацию сервера. В предлагаемых решениях, рассчет идет исходя из потребностей системы на базе unix. Для сервера под управлением Windows следует немного увеличить частоту выбираемого процессора (на 200-400MHz) и количество оперативной памяти (на 512Mb).

Платформа

Под платформой обычно понимается материнская плата с корпусом (чаще всего 1U/2U) и ряд периферийных устройств, интегрированных в нее либо размещающихся непосредственно на корпусе.

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

Как таковая платформа является ограничением по дальнейшему наращиванию (апгрейду) сервера, поэтому к ее выбору нужно отнестись достаточно ответственно.

В зависимости от цели, для которой собирается сервер, можно обратить внимание на следующие комплектации платформы (далее будут приводиться примеры решений на базе INTEL-платформы, их аналоги от AMD подобрать, думаю, проблем не будет):

  • под сервер для локальной сети: серверные решения на базе 604 сокета (одно- или двухпроцессорные системы с одноядерным процессором либо с поддержкой HT) или на основе решения для десктопов, поддержка SAS/SCSI не обязательна, достатачно х86 архитектуры (32 бита), поддержка не менее 4Гб оперативной памяти;
  • под сервер начального уровня: серверные решения на базе 604 сокета (двухпроцессорные, с одноядерными процессорами либо с поддержкой HT) или на основе 775 сокета (однопроцессорные, с двух- или четырехядерными процессорами), возможно, но крайне не желательно, использование мощьных десктоп-решений на базе четырехядерных процессоров, поддержка SAS/SCSI желательна, обязателен RAID-контроллер, крайне желательна поддержка х64 архитектуры (64 бита), но, с некоторыми ухищрениями, можно обойтись и х86, поддержка не менее 8Гб оперативной памяти;
  • под сервер коммерческого проекта: серверные решения на базе 771 сокета (двухпроцессорные, с двух- или четырехядерными процессорами) либо на базе 1366 сокета (одно- или двухпроцессорные системы с двух- или четырехядерными процессорами с поддержкой HT), поддержка SAS обязательна, архитектура х64 (64 бита) обязательна, наличие неинтегрированного RAID-контроллера обязательна, поддержка не менее 8Гб оперативной памяти.

Процессор(ы)

Процессоры можно условно разделить на два класса - первый, это серверные процессоры (Xeon), и десктоп-решения (всевозможные dual core, core2duo, core2quad, core i3, core i5, core i7 и прочие их разновидности). При выборе платформы и процессора следует учитывать, что некоторые их них ориентированны только на серверные процессоры, и десктоп-процессоры в них просто не запустятся. Основное отличие серверных процессоров от из десктоп-аналогов в размере кеша второго уровня и поддержке некоторых технологий, например аппаратной витруализации (Virtualization Technology) (или полноте их поддержки), хотя, в последнее время, по поддержке технологий десктоп-решения и серверные аналоги практически не отличаются.

Тактовая частота процессора не столь важна для игрового сервера, куда важнее количество одновременно выполняемых потоков (ниток) в системе. К примеру, между процессором с тактовой частотой 3.4GHz, но с одним ядром, и процессором с тактовой частотой 1.6GHz, но двухядерным, однозначно, выбор будет за вторым.

Далее ядром, я буду называть количество ядер в системе без как такового учета количества процессоров (для примера, два одноядерных процессора - два ядра, два четырехядерных процессора - восемь ядер). В случае необходимости нескольких процессоров, это будет явно указываться.

  • под сервер для локальной сети: вполне достаточно одного-двух ядер, поддержка HyperThreading-а (HT) не помешает;
  • под сервер начального уровня: крайне желательно иметь хотя бы два ядра в системе, лучше 4 количество процессоров не существенна;
  • под сервер коммерческого проекта: обязательно два отдельных процессора, по 4 ядра на каждом.

Оперативная память

Выбор оперативной памяти в первую очередь диктуется типом выбранной платформы, соответственно заострять внимание на типе оперативной памяти я не вижу смысла (какую память платформа поддерживает, такую и есть смысл ставить). Можно лишь отметить, что при прочих равных условиях, кардинальных изменений в качестве работы сервера с памятью DDR, DDR2 или DDR3 заметно не будет, зато от объема оперативной памяти напрямую зависит максимальный онлайн сервера, так что при выборе между 8Гб DDR2 и 4Гб DDR3 одновначно лучше выбрать первое.

Касательно частоты памяти, я не вижу особо смысла за ней гнаться (вполне достаточно будет 400MHz для DDR, 667MHz для DDR2 и 1034MHz для DDR3).

Отдельно хочется отметить FB-DIMM-пямять. Пямать с полной буферизацией (FB-DIMM) сама по себе немного медленнее, чем соответствующий ей DDRx, но, благодаря другой архитектуре контроллера памяти, она позволяет, во первых, поддерживать больший объем памяти, и во-вторых, что самое главное, обращаться независимо к каждой плашке памяти, в отличие от DDR, которая позволяет только одному процессору в единицу времени обращаться ко всему банку памяти. Выигрыш от этого можно увидеть только в многопроцессорных (не путать с многоядерными) системах. Также следует отметить, что если платформа поддерживает этот тип памяти, то другая память на ней работать не будет, хотя разъемы внешне и одинаковые.

  • под сервер для локальной сети: можно ограничиться 4Гб оперативной памяти;
  • под сервер начального уровня: нужно как минимум 6Гб оперативной памяти;
  • под сервер коммерческого проекта: нужно минимально 8Гб оперативной памяти, лучше 12-16.

Дисковая система

Дисковая система оказывает, пожалуй, важнейшее влияние на происодительность сервера в целом и на максимальный онлайн в частности, так как жесткий диск является самым медленным их устройств сервера. Особенно сильно его влияние начинает сказываться на онлайне выше 300, когда количество обращений к базе данных (а именно она и размещается на диске) становится высоким (в зависимости от сборки и оптимизации работы с базой, запросто может быть несколько десятков обращений в секунду и, чаще всего, они абсолютно не оптимизированные) и скорость получения данных из нее уже начинает существенно замедлять игровой процесс.

Жесткие диски можно разделить по типу подключения с низкой пропускной способностью канала (IDE и SATA) и высокой пропускной способностью канала (SAS и SCSI), по скорости доступа к данным на диски для статической информации, с низкой скоростью доступа (5400rpm, оборотов в минуту, и 7200rpm) и для динамических данных, с высокой скоростью доступа (10000rpm и 15000rpm). Также, при выборе жесткого диска стоит обратить внимание на объем встроенного кеша, чем он больше, тем лучше.

В зависимости от скорости доступа к данным значительно уменьшается максимальный объем диска, так, например, SATA-диски 7200rpm бывают до 2Тб, в то время как SAS-диски 15000rpm больше 150Гб встречаются крайне редко и стоят очень дорого.

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

Raid-массивы можно разделить на повышающие емкость/производительность (raid 0, stripe) и повышающие надежность (raid 1, mirror). Особенность stripe-массивов в том, что скорость чтения/записи на такие массивы растет прямо-пропорционально количеству дисков, в них участвующих, т.е. если скорость одного диска - 100Мб/сек, то 4 таких диска в raid-0 дадут примерно 400Мб/сек. Mirror-массивы характерны частичным или полным дублированием данных между дисками, но при этом скорость доступа к ним, обычно, развра скорости доступа к одному диску в массиве, так два диска в raid-1 будут иметь всегда одинаковое содержимое и при отказе одного из дисков, данные будут прочитаны со второго. Здесь описаны далеко не все существующие raid-массивы, желающие без труда найдут более подробную информацию в интернете.

  • под сервер для локальной сети: подойдут современные SATA-диски 7200rpm, при желании можно собрать программный raid-1 для надежности;
  • под сервер начального уровня: желательны один SAS/SCSI диск на 10000-15000rpm на котором будет размещаться база данных, и один SATA диск 7200rpm для самого сервера и хранения бекапов, при желании можно собрать программный или аппаратный raid-1 (т.е. в системе будет 4 диска, два SAS/SCSI в raid-1 и два SATA в raid-1);
  • под сервер коммерческого проекта: обязателен аппаратный raid-0 массив из двух и более 15000rpm SAS дисков под базу данных и raid-1 из пары SATA 7200rpm под ОС, сервер и бекапы.

Интернет-соединение (канал)

Средний расход канала на одного игрока - порядка 24кбит/сек (при фарме мобов в соло или в пати). Также стоит отметить, что в момент массовых ПВП или осад, расход канала на одного игрока, находящегося на данной территории значительно возрастает (до 100 и более кбит/сек) за счет большого количества объектов в игре и событий с ними, о которых нужно пересылать данные.

Следует отметить, что помимо пропускной способности канала немаловажный фактор, влияющий на комфортную игру, это качество каналов провайдера (датацентра) до игрока, например, при размещении сервера в локальной сети провайдера, у всех его абонентов проблем с доступом к нему не будет, а у игроков из интернета могут возникнуть серьезные проблемы, если внешний канал провайдера перегружен, хотя линк (скорость обмена данными с ближайшим коммутационным оборудованием) у сервера будет, допустим, 1Гбит/сек. Подобная ситуация нередко встречается и в датацентрах, так как чаще всего под 100Мбит доступа в интернет, предлагаемым датацентром, имеется ввиду совместный канал в 100Мбит на, например, данную стойку (что при большой загруженности стойки может превратиться в 20-30Мбит реальной скорости). Также, немаловажным является общая нагрузка на каналы датацентра (вполне реальна ситуация, при которой, скажем, весь канал датацентра в 10Гбит/сек будет выбран их клиентами и опять же реальная скорость доступа для сервера окажется значительно ниже) и качество настройки маршрутизации у датацентра и его вышестоящих провайдеров (на сколько корректно выбираются маршруты доставки траффика до той или иной точки, например, при неправильной настройке, запросто может получиться, что траффик от московского интернет провайдера до московского же датацентра пойдет через Европу, что в итоге даст пинг 150-200 и сделает игру не комфортной).

Крайне желательно перед выбором датацентра уточнить эти нюансы, если есть такая возможность, проверить пинг и трассировку до выбранного датацентра из нескольких точек мира, откуда ожидается наибольшее количество игроков в разное время (Москва, Санкт-Петербург, Пермь, Екатеринбург, Сочи, несколько крупных городов Украины). Проще всего попросить выполнить соотв. команды своих знакомых/игроков и попросить прислать их результаты Вам. Не редки случаи, когда датацентр исправляет ошибки в маршрутизации по предоставлению результатов трассировки, так что не надо отчаиваться, если Вам не повезло с датацентром.

Далее рассматривается скорость гарантированного (т.е. монопольного, реального) доступа в сеть интернет.

  • под сервер для локальной сети (до 300 живого онлайна): до 10Мбит/сек при штатной работе и до 30Мбит/сек при участии всего сервера в осадах;
  • под сервер начального уровня (до 800 живого онлайна): до 22Мбит/сек при штатной работе и до 70Мбит/сек при участии более 80% сервера в осадах;
  • под сервер коммерческого проекта (от 1500 живого онлайна): от 40Мбит/сек при штатной работе и от 120Мбит/сек при участии  50% сервера в осадах.

Скорость более 100Мбит/сек можно получить не обязательно при использовании 1Гбит/сек линка, можно подключить 2-3 линка (соответственно, при наличии 2х-3х сетевых карт) по 100Мбит/сек и настроить аггрегацию трафика через них. На приктике, если нужна скорость до 300Мбит/сек, ее дещевле получить именно так.

 

Комментарии  

 
+3 #1 podol1 18.11.2010 16:46
Статья просто отличная! Спасибо.
Цитировать
 
 
-7 #2 Фейк 13.12.2010 07:23
А что видяху можно любую?
Цитировать
 
 
+6 #3 Blakkky 20.12.2010 03:10
Если не секрет, уважаемый Фейк, а зачем серверу видеокарта? :-) Чтобы саппорт в дата-центре на нем порнуху могли смотреть? :-)

Естественно, видеокарта не важна вообще, вполне хватит и интегрированной .
Цитировать
 
 
+1 #4 Dmitrij 04.07.2011 12:28
подскажите пожалуйста почему пашут что
по 64 мегабайта оперативной памяти на каждого активно работающего с базой
64*1500=93,7 гб ссылка http://web32.clan.su/forum/12-10-1
а у вас под сервер коммерческого проекта: нужно 12-16 гб сервер для коммерческого проекта более 1500 человек
сколько же нужно на самом деле оперативной памяти на одного человека?
Цитировать
 
 
+1 #5 Blakkky 04.07.2011 13:30
1500 игроков онлайн не есть 1500 активный подключений к базе данных, ведь прямого доступа в базу (соединения с сервером mySQL/MSSQL) у игроков нету.

Игрок подключается к игровому серверу, игровой сервер подключается к базе и держит активными несколько (1, 10, 20, 50, 100...) соединений с базой данных, все запросы в БД выполняются сервером через случайно выбранное соединение из этого пула, при этом нужды разных игроков (запросы на сохранение/загрузку данных) могут быть обработаны в одном и том же соединении с БД последовательно .

В некоторых статьях по оптимизации сервера ла2 почему-то рекомендуется создавать в этом пуле соединений столько, сколько планируется онлайна. При такой настройке порядка 60-70% соединений практически не используются (избыточны) и от них вполне можно отказаться.

Вот и получится:
- 100-200 соединений с БД по 64Мб (эта цифра зависит от настроек сервера БД, можно вполне и в 8-16Мб на соединение уложиться),
- порядка 3Гб на загрузку ГЕО-даты,
- порядка 4-6Гб на нужды игрового сервера на 1000 онлайна (очень сильно зависит от оптимизации кода сборки сервера), получаем порядка 10-12Гб на 1000-1500 онлайна на один игровой сервер.
Цитировать
 

Добавить комментарий


Защитный код
Обновить