微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获取机器的memory和CPU信息?

最近做了一个项目,需要获取机器的cpu和memory的使用情况。花了一些时间网上搜索了一下,自己也做了些测试。总结下来,基本上2种方式:一种是用WMI(2种),另一种是用Performance counter。

1. Use WMI to create connection to the computer passing username and password. Once the connection is created, query the cpu& memory by passing the query, similar as sql. This way can get cpu & memory for remote PC and local PC. For example:

System.Management.Connectionoptions Conn = new Connectionoptions();

Conn.Username = mpusername;

Conn.Password = mppwd;

string scopestring = // + mpserver + /root/cimv2;

System.Management.ManagementScope Ms = new ManagementScope(scopestring);

Ms.Connect();

mos.Scope = Ms;

ObjectQuery oq = new ObjectQuery();

oq.QueryString = select * from Win32_Processor;

mos.Query = oq;

ManagementObjectCollection moc = mos.Get();

内存这块花了比较多的时间,之前的对象已经过期,不能使用了,最后找到这个类“Win32_PerfRawData_PerfOS_Memory”

ManagementObjectCollection mcr = mcp.getQueryResult(select * from Win32_ComputerSystem);

foreach (ManagementObject mo in mcr)
{
if (mo[TotalPhysicalMemory] != null)
{
totalm = long.Parse(mo[TotalPhysicalMemory].ToString());
}
}
ManagementObjectCollection moc = mcp.getQueryResult(select * from Win32_PerfRawData_PerfOS_Memory);
foreach (ManagementObject mo in moc)
{
string avilable = mo.GetPropertyValue(AvailableBytes).ToString();
avilablem = long.Parse(avilable);
}

2. Get local server’s cpu and momory @R_852_4045@ion passing the WMI classes, such as “Win32_Processor”, “Win32_OperatingSystem

ManagementClass mc = new ManagementClass(Win32_OperatingSystem);

ManagementObjectCollection moc = mc.GetInstances();

3. Use performance counter to get performance data passing the performance counter name, such as monitor.PerformanceCounterFun(Processor, _Total, % Processor Time). normally we shoud get performance counter data several times, then use the average values.

虽然这些比较简单,但是自己还是想把它记录下来,希望对大家能有用!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐