CPU и Memory Cap для AppDomain

Я хочу разместить exe в appdomain и назначить ему процессор и память, чтобы он не использовал больше, чем назначенная мощность обработки. Можно ли это сделать и как?

Ответы

Ответ 2

Вы не можете ограничить максимальную память, насколько я знаю.

Однако, с .NET 4 on, память, выделенная в настоящее время AppDomain, доступна в AppDomain.MonitoringSurvivedMemorySize, если AppDomain.MonitoringIsEnabled установлено значение true. Вы можете развернуть сторожевой поток, чтобы контролировать распределения.

Ответ 3

Даже мониторы производительности Windows не позволяют просматривать использование процессора AppDomain - поскольку AppDomains являются логическими конструкциями CLR и не известны ОС, единственное отслеживание использования ЦП на уровне процесса - я был бы шокирован, если есть способ ограничить то, что вы даже не можете контролировать.

В чем именно причина вашего желания? Почему вы не хотите, чтобы ваше приложение использовало все доступные ему ресурсы? Если это просто случай убедиться, что для запуска других процессов достаточно накладных расходов, вы не можете просто установить приоритет потоков очень низко и позволить планировщику Windows понять это?

Ответ 4

Единственный способ, которым я знаю, что-то подобное, - использовать HyperV (или аналогичные продукты) и разбивать ваши приложения на разные виртуальные машины. Но это не совсем дешевое или простое решение.