如何获得cpu的利用率? 如何获得cpu的利用率? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在Windows 2000下取系统CPU占有率 一、应用背景 在许多实际的应用中,需要知道系统当前CPU的占有率,以便决定是否该进行某些操作。例如在一个大型系统中,经常要完成数据备份操作,但同时要保证业务不受影响,因此一般是在系统当前的CPU占有率较低的情况下进行。 二、实现原理 如何在Windows NT/2000下取得系统CPU的占有率呢?在微软提供给开发人员的公开API(Win32 API)中,没有提供取系统信息的API,所以必须通过本机系统服务(Native API)来完成。Native API是Windows用户模式中为上层Win32 API提供接口的本机系统服务。在这里用到一个本机系统服务函数NtQuerySystemInformation,这个函数为我们提供了丰富的系统信息,同时还包括对某些信息的控制和设置。下面是这个函数的原型: typedef NTSTATUS (__stdcall *NTQUERYSYSTEMINFORMATION) (IN SYSTEM_INFORMATION_CLASS SystemInformationClass, IN OUT PVOID SystemInformation, IN ULONG SystemInformationLength, OUT PULONG ReturnLength OPTIONAL); NTQUERYSYSTEMINFORMATION NtQuerySystemInformation; 从中可以看到,SystemInformationClass是一个类型信息,它大概提供了50余种信息,也就是我们可以通过这个函数对大约50多种的系统信息进行探测或设置。 SystemInformation是一个LPVOID型的指针,它为我们提供需要获得的信息,或是我们需要设置的系统信息。SystemInformationLength是SystemInformation的长度,它根据探测的信息类型来决定。至于ReturnLength则是系统返回的数据长度,通常可以设置为空指针(NULL)。 通过该函数获得系统CPU占有率的过程如下: 1, 取出系统中CPU个数; 2, 取出当前系统时间(Ticks个数),减去原来保存的系统时间,得出从上次取值到目前的系统时间差; 3, 取出系统当前空闲时间,减去原来保存的空闲时间,得出这个时间段空闲时间 4, 用这个时间段空闲时间除以系统时间,得出这段时间系统的CPU空闲率 5, 用100-(系统的空闲率)/(CPU个数)所得的值就是CPU占有率 又遇到看不懂的代码. 动态数组问题 这有没有办法? 标题:关于TFrame部署问题 关于TClientDataSet对中文的支持问题?在线等待! 一个关于如何打包BDE中的DataBase的问题 TQuery与TUpdateSQL控件的区别是什么?答者有分 向大家请教Delphi如何调用java webservice的过程,越详细越好,不胜感激! 请问诸位大虾:“从中间层的方法中返回一个结果集,用哪种方法比较好?” 在delphi中调用IE 关于listview1问题,请教一下 这个查询在BCB中竟然无人给出正确答案!!!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货