社区
进程/线程/DLL
帖子详情
问:如何编程监控CPU的占用情况?
wycaicai
2005-03-26 08:42:34
如何编程监控CPU的占用情况?
百分之多少?
类似任务管理器中的那个!
...全文
228
9
打赏
收藏
问:如何编程监控CPU的占用情况?
如何编程监控CPU的占用情况? 百分之多少? 类似任务管理器中的那个!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用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
Linux C++ 获取某一进程的
CPU
占用
率以及内存
占用
情况
最近做
监控
相关东西的时候,需要获取某一进程
CPU
以及内存使用
情况
,就简单的写了一下,代码具体如下: #include #include #include #include #include #define VMRSS_LINE 17 #define VMSIZE_LINE 13 #define PROCESS_ITEM 14 typedef struct { unsigned l
使用shell脚本编写
监控
系统资源(
CPU
,内存,磁盘)使用
情况
在现代计算机系统中,确保系统资源的高效利用和及时响应异常
情况
至关重要。对于系统管理员和开发人员来说,
监控
CPU
、内存和磁盘使用
情况
是日常维护的核心任务之一。Shell脚本作为一种强大而灵活的工具,能够帮助我们自动化这些
监控
任务,实时获取系统资源使用
情况
,并在资源使用超过设定阈值时及时发出警报。
C++实现系统资源
监控
工具:
CPU
与内存
占用
内存管理是软件开发中的一个基本而重要的课题,尤其是在需要高性能和资源敏感型的应用程序中,如资源
监控
工具。理解操作系统内存管理机制,以及如何在C++中有效管理内存,是优化应用程序性能的关键。
实现系统进程和线程
CPU
占用
监控
工具
在操作系统的多任务处理能力中,进程和线程是两个基本的执行单元。它们共同支撑起多任务环境下的并发执行和资源管理。进程是一个独立的程序执行实例,拥有自己的内存空间、系统资源和运行状态。它是在操作系统中完成任务的基本单位。一个进程可以包含一个或多个线程。线程是进程中的一个执行流,是
CPU
调度和分派的基本单位。线程与同属一个进程的其他线程共享进程资源,例如内存空间和文件句柄,但拥有自己的栈和程序计数器。
CPU
占用
率,也被称为
CPU
使用率,是指在特定时间内
CPU
被使用的比率。
编程
获取linux的
CPU
使用率内存
占用
率
编程
获取linux的
CPU
使用率内存
占用
率
进程/线程/DLL
15,465
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章