Очень большая нагрузка на процессор - Страница 3 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Aion > Серверная часть

Важная информация

Серверная часть Обсуждения вопросов по установке и настройке эмулятора Aion-Emu, для совершенно новой и необыкновенно красивой игры - Aion.

Ответ
Опции темы
Непрочитано 10.01.2011, 15:52   #21
Аватар для black-soul
Пользователь

По умолчанию Re: Очень большая нагрузка на процессор

а вот такое железо какой онлайн потянет: процессор AMD Athlon(tm) X2 Dual Core Processor 4600+ 2.40 GHz оперативы:2гб интернет:тариф 24 мб
black-soul вне форума Ответить с цитированием
Непрочитано 11.01.2011, 11:10   #22
Аватар для sotariz
Пользователь

По умолчанию Re: Очень большая нагрузка на процессор

Цитата:
Сообщение от black-soul Посмотреть сообщение
интернет:тариф 24 мб
интернет от VEGA?
sotariz вне форума Ответить с цитированием
Непрочитано 11.01.2011, 16:15   #23
Пользователь

По умолчанию Re: Очень большая нагрузка на процессор

120% нагрузки - это нормальная ситуация в nix-системах... 100% - это полная загруженность одного ядра.
А по поводу "большая нагрузка" скорее всего это из-за холостых бесконечных циклов (как-раз один такой слопает одно ядро и будет 100% + 20% от остального). И уменьшение нагрузки при увеличении онлайна тоже вполне объяснимо - меньше времени ядро начинает проводить в пустом бесконечном цикле.
Пример псевдохолостого цикла (безотносительно какой-либо сборки, из головы написал, чтоб объяснить проблему):
Код:
while (true) {
    if (GameServer.getPlayers().size() > 0) {
        // что-нить делаем с плеерами
    }
}
Если плееров нету, то получаем холостой цикл (читай - 100% на одно ядро).
Можно поискать по коду (ядро/скрипты/etc) такие или похожие конструкции, и искоренить их.
Код:
while (true) {
    GameServer.playerMonitor.wait();
    if (GameServer.getPlayers().size() > 0) {
        // что-нить делаем с плеерами
    }
}
// и в методы добавления-удаления плееров после, 
// собственно, операции над плеером воткнуть
GameServer.playerMonitor.notify();
это так, самый простой фикс. Получим "залипание" псевдобесконечного цикла на wait()-е до первого вызова notify() у объекта-монитора, т.е. вместо 100% на одном ядре - "засыпание" нитки с этим циклом до реального изменения данных.

ЗЫ: не знаю, как в aion-е, а в mmocore из la2 такое место точно есть на дочитке пакетов, а также несколько раз натыкался на всяких "сторонних" примочках, типа выдавателей бонусов за голоса, встроенных в сервер, и т.д.

ЗЗЫ: а еще полездно иногда перед тем, как что-то писать многониточное высоконагруженное приложение, сначала почитать про синхронизацию данных и ниток хотя бы в инете и вообще про проблемы, связанные с такого рода задачами. Полезно бывает
Blakkky вне форума Ответить с цитированием
Непрочитано 11.01.2011, 22:16   #24
Аватар для black-soul
Пользователь

По умолчанию Re: Очень большая нагрузка на процессор

Цитата:
Сообщение от sotariz Посмотреть сообщение
интернет от VEGA?
Да интернет от Vega а что?(если плохо то посоветуйте другое,просто пока нету шансов провести кабель,а только через домашний или спутник)
Цитата:
Сообщение от Blakkky Посмотреть сообщение
120% нагрузки - это нормальная ситуация в nix-системах... 100% - это полная загруженность одного ядра.
А по поводу "большая нагрузка" скорее всего это из-за холостых бесконечных циклов (как-раз один такой слопает одно ядро и будет 100% + 20% от остального). И уменьшение нагрузки при увеличении онлайна тоже вполне объяснимо - меньше времени ядро начинает проводить в пустом бесконечном цикле.
Пример псевдохолостого цикла (безотносительно какой-либо сборки, из головы написал, чтоб объяснить проблему):
Код:
while (true) {
    if (GameServer.getPlayers().size() > 0) {
        // что-нить делаем с плеерами
    }
}
Если плееров нету, то получаем холостой цикл (читай - 100% на одно ядро).
Можно поискать по коду (ядро/скрипты/etc) такие или похожие конструкции, и искоренить их.
Код:
while (true) {
    GameServer.playerMonitor.wait();
    if (GameServer.getPlayers().size() > 0) {
        // что-нить делаем с плеерами
    }
}
// и в методы добавления-удаления плееров после, 
// собственно, операции над плеером воткнуть
GameServer.playerMonitor.notify();
это так, самый простой фикс. Получим "залипание" псевдобесконечного цикла на wait()-е до первого вызова notify() у объекта-монитора, т.е. вместо 100% на одном ядре - "засыпание" нитки с этим циклом до реального изменения данных.

ЗЫ: не знаю, как в aion-е, а в mmocore из la2 такое место точно есть на дочитке пакетов, а также несколько раз натыкался на всяких "сторонних" примочках, типа выдавателей бонусов за голоса, встроенных в сервер, и т.д.

ЗЗЫ: а еще полездно иногда перед тем, как что-то писать многониточное высоконагруженное приложение, сначала почитать про синхронизацию данных и ниток хотя бы в инете и вообще про проблемы, связанные с такого рода задачами. Полезно бывает
ну железо 2 ядра я несовсем понял что тут написано ну как я понял при 100% нагрузке ето нагружен только 1 процесор из 2?и что в компе надо почистить чтото(что непонял)
black-soul вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Большая проблема Exelko Игровой клиент 18 01.04.2010 19:18
очень важно !помогите очень прошу! skil Работа со скриптами 1 05.03.2010 13:57
5 Очень Важных Вопросов! Assassinate Lineage II 3 25.12.2009 13:06
Большая проблема с L2FileEdit memves Lineage II 4 29.01.2009 10:01
Очень прикольный клип Nastia Курилка / Yak floor 11 20.12.2008 01:59


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 05:31. Часовой пояс GMT +3.

Вверх