Использование процессора дросселем, потребляемое процессом

6554
Aidan Knight

Мы управляем компанией, занимающейся созданием игровых серверов, где у нас в основном большое количество клиентов, использующих одну и ту же машину, и они просто используют свой экземпляр процесса Java (Minecraft), управляемый нашими панелями управления Web. В последних нескольких выпущенных обновлениях игр мы заметили, что многие сторонние плагины, используемые нашим клиентом, плохо написаны, и мы часто наблюдаем огромное увеличение ЦП на некоторых серверах, пока мы не завершим процесс вручную.

Наша игровая панель автоматически перезапускает процессы, поэтому их уничтожение не является проблемой. Наша проблема заключается в том, что, как только один из этих серверов начинает потреблять 50% + использование ЦП, потребуется не менее 5 минут, чтобы RDP вошел в компьютер, определил, кому он принадлежит, завершил работу и уведомил их.

Существуют ли какие-либо текущие решения для Server 2008, которые позволяют регулировать загрузку ЦП или наихудший случай, просто автоматически уничтожать процесс, застрявший с такой нагрузкой? Поскольку Minecraft по сути является однопоточным приложением, мы исследовали его с помощью Affinity, хотя с изменениями в наших пакетах и ​​колебаниями в использовании это не очень хорошо работает для нас. Какой-то вариант ограничения максимального использования, которое может использовать процесс, был бы идеальным, или, по крайней мере, вариант, позволяющий убить процесс с помощью такого количества.

Спасибо!

0

2 ответа на вопрос

1
Slartibartfast

Похоже, вы хотите что-то вроде того, что описано здесь:

http://technet.microsoft.com/en-us/library/ff384148%28v=ws.10%29.aspx

Это система квот на пользователя для процессов (технически на SID), и она должна делать то, что вам нужно. Если у вас есть 10 процессов Minecraft и вы ограничиваете до 9%, у вас должно быть 10% ЦП для RDP и т.п.

Если вы используете другие ограничения на ресурсы, возможно, вы захотите рассмотреть их отдельно.

1
David Schwartz

Я бы порекомендовал просто отбросить приоритет для каждого экземпляра. Таким образом, ваш удаленный доступ будет иметь более высокий приоритет, чем выполняемые задачи. Вы также можете захотеть взглянуть на более легкую схему администрирования, такую ​​как PowerShell Remote.