Регулирование использования ЦП, потребляемого процессом

Регулирование использования ЦП, потребляемого процессом

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

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

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

Спасибо!

решение1

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

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

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

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

решение2

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

Связанный контент