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