Ответ 1
Похоже, есть решение для этого требования в .NET 4.0
Я хочу разместить exe в appdomain и назначить ему процессор и память, чтобы он не использовал больше, чем назначенная мощность обработки. Можно ли это сделать и как?
Похоже, есть решение для этого требования в .NET 4.0
Вы не можете ограничить максимальную память, насколько я знаю.
Однако, с .NET 4 on, память, выделенная в настоящее время AppDomain
, доступна в AppDomain.MonitoringSurvivedMemorySize
, если AppDomain.MonitoringIsEnabled
установлено значение true
. Вы можете развернуть сторожевой поток, чтобы контролировать распределения.
Даже мониторы производительности Windows не позволяют просматривать использование процессора AppDomain - поскольку AppDomains являются логическими конструкциями CLR и не известны ОС, единственное отслеживание использования ЦП на уровне процесса - я был бы шокирован, если есть способ ограничить то, что вы даже не можете контролировать.
В чем именно причина вашего желания? Почему вы не хотите, чтобы ваше приложение использовало все доступные ему ресурсы? Если это просто случай убедиться, что для запуска других процессов достаточно накладных расходов, вы не можете просто установить приоритет потоков очень низко и позволить планировщику Windows понять это?
Единственный способ, которым я знаю, что-то подобное, - использовать HyperV (или аналогичные продукты) и разбивать ваши приложения на разные виртуальные машины. Но это не совсем дешевое или простое решение.