社区
进程/线程/DLL
帖子详情
问:如何编程监控CPU的占用情况?
wycaicai
2005-03-26 08:42:34
如何编程监控CPU的占用情况?
百分之多少?
类似任务管理器中的那个!
...全文
191
9
打赏
收藏
问:如何编程监控CPU的占用情况?
如何编程监控CPU的占用情况? 百分之多少? 类似任务管理器中的那个!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pepsi1980
2005-03-28
打赏
举报
回复
去vcbak上面去找!
liuyan4794
2005-03-27
打赏
举报
回复
up
sjcode
2005-03-26
打赏
举报
回复
学习
lemon_wei
2005-03-26
打赏
举报
回复
我这有段2000的,你可以参考,出自VC知识库,非本人所写。
--------------------------------------------------
#define SystemBasicInformation 0
#define SystemPerformanceInformation 2
#define SystemTimeInformation 3
#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))
typedef struct
{
DWORD dwUnknown1;
ULONG uKeMaximumIncrement;
ULONG uPageSize;
ULONG uMmNumberOfPhysicalPages;
ULONG uMmLowestPhysicalPage;
ULONG uMmHighestPhysicalPage;
ULONG uAllocationGranularity;
PVOID pLowestUserAddress;
PVOID pMmHighestUserAddress;
ULONG uKeActiveProcessors;
BYTE bKeNumberProcessors;
BYTE bUnknown2;
WORD wUnknown3;
} SYSTEM_BASIC_INFORMATION;
typedef struct
{
LARGE_INTEGER liIdleTime;
DWORD dwSpare[76];
} SYSTEM_PERFORMANCE_INFORMATION;
typedef struct
{
LARGE_INTEGER liKeBootTime;
LARGE_INTEGER liKeSystemTime;
LARGE_INTEGER liExpTimeZoneBias;
ULONG uCurrentTimeZoneId;
DWORD dwReserved;
} SYSTEM_TIME_INFORMATION;
LARGE_INTEGER m_liOldIdleTime;
LARGE_INTEGER m_liOldSystemTime;
unsigned long m_fNewUsges;
----------------------------------
void CMy111View::OnCpuUse()
{
// TODO: Add your command handler code here
char CpuUse[20];
SYSTEM_PERFORMANCE_INFORMATION SysPerfInfo;
SYSTEM_TIME_INFORMATION SysTimeInfo;
SYSTEM_BASIC_INFORMATION SysBaseInfo;
double dbIdleTime;
double dbSystemTime;
LONG status;
typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG);
PROCNTQSI NtQuerySystemInformation;
NtQuerySystemInformation = (PROCNTQSI)GetProcAddress(
GetModuleHandle("ntdll"),
"NtQuerySystemInformation"
);
if (!NtQuerySystemInformation)
{
return;
}
// get number of processors in the system
status = NtQuerySystemInformation(SystemBasicInformation,
&SysBaseInfo,sizeof(SysBaseInfo),NULL);
if (status != NO_ERROR)
{
return;
}
status = NtQuerySystemInformation(SystemTimeInformation,
&SysTimeInfo,sizeof(SysTimeInfo),0);
if (status!=NO_ERROR)
{
return;
}
// get new CPU's idle time
status = NtQuerySystemInformation(SystemPerformanceInformation,
&SysPerfInfo,sizeof(SysPerfInfo),NULL);
if (status != NO_ERROR)
{
return;
}
// if it's a first call - skip it
if (m_liOldIdleTime.QuadPart != 0)
{
// CurrentValue = NewValue - OldValue
dbIdleTime = Li2Double(SysPerfInfo.liIdleTime) - Li2Double(m_liOldIdleTime);
dbSystemTime = Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(m_liOldSystemTime);
// CurrentCpuIdle = IdleTime / SystemTime
dbIdleTime = dbIdleTime / dbSystemTime;
// CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors
dbIdleTime = 100.0 - dbIdleTime * 100.0 / (double)SysBaseInfo.bKeNumberProcessors + 0.5;
m_fNewUsges = (UINT)dbIdleTime;
sprintf(CpuUse,"%d%%",m_fNewUsges);
AfxMessageBox(CpuUse);
}
// store new CPU's idle and system time
m_liOldIdleTime = SysPerfInfo.liIdleTime;
m_liOldSystemTime = SysTimeInfo.liKeSystemTime;
}
wycaicai
2005-03-26
打赏
举报
回复
大家帮帮忙
wycaicai
2005-03-26
打赏
举报
回复
我的是2003的系统
直接添加引用ntdll.dll,添加不上。
怎么办?
就没有其他的办法了吗?
oyljerry
2005-03-26
打赏
举报
回复
调用NTDLL.DLL中未公开API NtQuerySystemInformation枚举本地系统进程
wycaicai
2005-03-26
打赏
举报
回复
NtQuerySystemInformation我怎么不能用?
我的系统是win 2003的,还有我发现有个函数GetSystemTimes(),这个函数我也不能用,他可以返回IdleTime,KernelTime和UserTime
优化你的计算机性能:如何根据
CPU
占用
率决定硬件升级
根据
CPU
占用
率的不同
情况
,可以考虑升级
CPU
、扩充内存、更新硬盘驱动器、网络带宽升级或全面升级整个系统等不同的硬件升级方案。在选择硬件升级方案时,需要综合考虑
CPU
占用
率、其他硬件指标、预算限制和系统需求等因素。
《Linux运维总结:Shell脚本实现
监控
磁盘、
CPU
、内存
占用
情况
》
《Linux运维总结:Shell脚本实现
监控
磁盘、
CPU
、内存
占用
情况
》
利用shell脚本来
监控
linux系统的负载与
CPU
占用
情况
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://huangrs.blog.51cto.com/2677571/788379 这几天在学习研究shell脚本,写的一些系统负载与
CPU
监控
脚本程序。在没有nagios
监控
软件的
情况
下,只要服务器能上互联网,就可通过发邮件的方式来提醒管理员系统负载与
CPU
占用
的使用
情况
。 一、安装
高频面试题:服务器
CPU
占用
过高怎么办?搞定只需简单7步
jstack命令能够打印出当前所有java栈中的线程信息,其中必然包括出
问
题的线程。剩下我们要做的就是根据线程的id,找到这个线程正在执行的方法即可。这里71289是十进制整数,而jstack日志中的线程id是十六进制,因此需要做以下转换。本案例中的pid是71289,那么接下来距离找出出
问
题 的方法已经不远了。在Java开发岗位的面试中,时不时会出现一些运维类的题目,其实这也反映了后端面试的一种趋势。这是一道比较常见的线上排错
问
题,接下来就让我们我们来分析一下这个
问
题的解决过程吧。
Linux
编程
: C++线程
CPU
使用率
监控
与分析工具
本文将介绍一个结合 C++ 和 Python 的高性能
CPU
使用率
监控
和分析工具。该工具通过读取 Linux 系统的 `/proc` 文件系统实时采集
CPU
使用数据,利用 UnQLite 数据库进行高效存储,并通过 Python 实现数据解析和可视化。本工具支持对多个进程同时进行分析。
进程/线程/DLL
15,473
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章