Квотирование ресурсов в Windows, возможно?
От: Аноним  
Дата: 06.05.11 13:56
Оценка:
Всем привет.

Бывает так, что некий процесс (пользовательский) запускает настолько мощные вычисления, что система становиться совершенно "неповоротливой" (на данный момент это Windows7, P4, 2Gb).
В моем случае, как правило, это мои разработки в которые вкрадывается ошибки приводящие к бесконечным циклам, сложнейшим вычислениям (некорректные регулярные выражения например) и т.п.
Бывает, что попадаются и сторонние приложения с таким "наглым" поведением (я не говорю об играх сейчас).

В этих случаях мне, чаще всего хочется завершить этот процесс. НО. Диспетчер задач надо очень долго ждать. Не всегда под рукой cmd.exe (на даже тогда tasklist/taskkill может надолго "зависнуть"), и терпенья не хватает — hard reset. Понятно, что такой reset может потенциально привести к проблемам. Не говоря о потерянной (вероятность не нулевая) получасовой работе (а может и больше).

В качестве превентивных мер написал резидента, который по хоткею стартует cmd.exe (для taskkill). Но и taskkill иногда наглухо "зависает". Был прецедент: ждал ~3 часа, потом надоело. При этом — explorer еле-еле работал, но все запросы на создание процессов (task manager, taskkill, cmd.exe..) "зависали".

Вопрос, существует ли в системах Windows защита (настраиваемая) от такого поведения (захвата ресурсов процессора/памяти/...)? Чтобы у меня был реальный шанс принять меры для защиты работы системы от нежелательного процесса.

И, еще один вопрос: я полагаю многоядерные системы в этом отношении должны быть на высоте, я прав?
windows resource guard quota
Re: Квотирование ресурсов в Windows, возможно?
От: x64 Россия  
Дата: 06.05.11 14:13
Оценка: 2 (1)
А>...существует ли в системах Windows защита (настраиваемая) от такого поведения (захвата ресурсов процессора/памяти/...)?

Приоритеты потоков/процессов?

А>...я полагаю многоядерные системы в этом отношении должны быть на высоте, я прав?


Не факт, т.к. процесс может захватить своими вычислениями все доступные ядра.
Re: Квотирование ресурсов в Windows, возможно?
От: DOOM Россия  
Дата: 06.05.11 14:18
Оценка: 2 (1)
Здравствуйте, Аноним, Вы писали:

А>Всем привет.


А>Бывает так, что некий процесс (пользовательский) запускает настолько мощные вычисления, что система становиться совершенно "неповоротливой" (на данный момент это Windows7, P4, 2Gb).

А>В моем случае, как правило, это мои разработки в которые вкрадывается ошибки приводящие к бесконечным циклам, сложнейшим вычислениям (некорректные регулярные выражения например) и т.п.
А>Бывает, что попадаются и сторонние приложения с таким "наглым" поведением (я не говорю об играх сейчас).

А>В этих случаях мне, чаще всего хочется завершить этот процесс. НО. Диспетчер задач надо очень долго ждать. Не всегда под рукой cmd.exe (на даже тогда tasklist/taskkill может надолго "зависнуть"), и терпенья не хватает — hard reset. Понятно, что такой reset может потенциально привести к проблемам. Не говоря о потерянной (вероятность не нулевая) получасовой работе (а может и больше).


А>В качестве превентивных мер написал резидента, который по хоткею стартует cmd.exe (для taskkill). Но и taskkill иногда наглухо "зависает". Был прецедент: ждал ~3 часа, потом надоело. При этом — explorer еле-еле работал, но все запросы на создание процессов (task manager, taskkill, cmd.exe..) "зависали".


А>Вопрос, существует ли в системах Windows защита (настраиваемая) от такого поведения (захвата ресурсов процессора/памяти/...)? Чтобы у меня был реальный шанс принять меры для защиты работы системы от нежелательного процесса.


А>И, еще один вопрос: я полагаю многоядерные системы в этом отношении должны быть на высоте, я прав?


Ну на вскидку. У Windows Server есть WSRM.
Но это у Windows Server (да еще и Enterprise).

Еще, как вариант, можно запустить cmd.exe с повышенным приоритетом — хотя при агрессивном свопировании или отъедании процессора это, скорее всего, не поможет.
Ну и если система многоядерная, то можно поиграться с Process Affinity — попробовать выделить одно ядро на критичные задачи, например.
Re: Квотирование ресурсов в Windows, возможно?
От: rtbsd http://rtbsd.org/
Дата: 06.05.11 17:31
Оценка: 4 (1)
Здравствуйте, Аноним, Вы писали:

В NT, Если cmd/taskkill/taskman запускается с классом приоритета REALTIME_PRIORITY_CLASS (в принципе даже неважно с каким уровнем приоритета внутри этого класса), то ни свопирование, ни загрузка всех ядер "обычной" задачей ему не помешают. Вероятно, для этого какой-то специальный сервис городить надо, стандартных средств для такого я не могу придумать.

А вот если "нехорошая" задача тоже знает о приоритетах, то она может сделать так , что больше вообще никто никогда не запустится.

З.Ы. Кстати, отсюда мораль -- под администратором работать плохо. А обычным пользователям REALTIME_PRIORITY_CLASS не дается.
Все написано там
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.