实时获取子Appdomain cpu使用、内存使用、线程数

Posted

技术标签:

【中文标题】实时获取子Appdomain cpu使用、内存使用、线程数【英文标题】:Getting sub-Appdomain cpu usage, memory usage, and thread number in real-time 【发布时间】:2014-11-17 03:37:23 【问题描述】:

在一个进程(main appdomain)中创建3-sub appdomain,如何实时获取sub-Appdomain cpu使用率、内存使用率、线程数?

【问题讨论】:

这是在 4 NOV2014 关闭之前被问到的,谷歌搜索揭示了一切,哈哈 c# how to get sub-appdomain cpu usage, memory usage 这是搜索中的第一个 【参考方案1】:

CPU 使用率和其他相关信息并不真正适用于 .Net AppDomain,它仅存在于 CLR 级别而不存在于操作系统级别。因此,默认情况下,您只能在流程级别跟踪这些详细信息。

从 .Net 4.0 开始,AppDomiain 具有名为 MonitoringIsEnabled 的静态属性。设置后,您可以使用其他属性 (AppDomain.Monitor<XXXX>) 跟踪详细信息。请注意,这仍然不是实时的。 This 可能是一个好的开始。

【讨论】:

【参考方案2】:

使用以下方法,获取的值似乎不正确。

public static double GetAppDomainCpuUsage(AppDomain hostDomain)
        

            if (Process.GetCurrentProcess().TotalProcessorTime.TotalMilliseconds > 0)
                return hostDomain.MonitoringTotalProcessorTime.TotalMilliseconds * 100 /                  Process.GetCurrentProcess().TotalProcessorTime.TotalMilliseconds;
            return 0;
        

        public static double GetAppDomainMemoryUsage(AppDomain hostDomain)
        
            if (AppDomain.MonitoringSurvivedProcessMemorySize > 0)
                return (double)hostDomain.MonitoringSurvivedMemorySize * 100 / (double)AppDomain.MonitoringSurvivedProcessMemorySize;
            return 0;
        

AppDomain.MonitoringIsEnabled = true;

【讨论】:

以上是关于实时获取子Appdomain cpu使用、内存使用、线程数的主要内容,如果未能解决你的问题,请参考以下文章

zabbix 3.2 监控Windows 实时内存使用率与CPU使用率

python 获取cpu内存硬盘等实时信息 psutil

如何实时测量 PC 组件(cpu、内存、磁盘等)的功率(瓦​​特)?

如何使用PHP实时监控Linux服务器的cpu,内存,硬盘信息

qt 获取磁盘空间大小,cpu利用率,内存使用率

如何将带有 dll 的应用程序从内存加载到 AppDomain 中并执行它?