获得系统中某个进程的cpu使用率
列举所有进程的CPU占用率)
typedef struct _THREAD_INFO
{
LARGE_INTEGER CreateTime;
DWORD dwUnknown1;
DWORD dwStartAddress;
DWORD StartEIP;
DWORD dwOwnerPID;
DWORD dwThreadId;
DWORD dwCurrentPriority;
DWORD dwBasePriority;
DWORD dwContextSwitches;
DWORD Unknown;
DWORD WaitReason;
}THREADINFO, *PTHREADINFO;
typedef struct _UNICODE_STRING
{
USHORT Length;
USHORT MaxLength;
PWSTR Buffer;
} UNICODE_STRING;
typedef struct _PROCESS_INFO
{
DWORD dwOffset;
DWORD dwThreadsCount;
DWORD dwUnused1[6];
LARGE_INTEGER CreateTime;
LARGE_INTEGER UserTime;
LARGE_INTEGER KernelTime;
UNICODE_STRING ProcessName;
DWORD dwBasePriority;
DWORD dwProcessID;
DWORD dwParentProcessId;
DWORD dwHandleCount;
DWORD dwUnused3[2];
DWORD dwVirtualBytesPeak;
DWORD dwVirtualBytes;
ULONG dwPageFaults;
DWORD dwWorkingSetPeak;
DWORD dwWorkingSet;
DWORD dwQuotaPeakPagedPoolUsage;
DWORD dwQuotaPagedPoolUsage;
DWORD dwQuotaPeakNonPagedPoolUsage;
DWORD dwQuotaNonPagedPoolUsage;
DWORD dwPageFileUsage;
DWORD dwPageFileUsagePeak;
DWORD dCommitCharge;
THREADINFO ThreadSysInfo[1];
} PROCESSINFO, *PPROCESSINFO;
//每秒钟查询一次
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Button2Click(NULL);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
PVOID pProcInfo = NULL;
DWORD dwInfoSize = 0x20000;
PPROCESSINFO pProcessInfo;
DWORD dwWorkingSet;
long ( __stdcall *NtQuerySystemInformation )( DWORD, PVOID, DWORD, DWORD );
static __int64 LastTotalProcessCPUUsage = 0;
static __int64 LastCurrentProcessCPUUsage = 0;
int CurrentDelta;
int TotalDelta;
__int64 TotalProcessCPUUsage = 0;
__int64 CurrentProcessCPUUsage = 0;
/
pProcInfo = (PVOID)(new byte[dwInfoSize]);
NtQuerySystemInformation = (long(__stdcall*)(DWORD,PVOID,DWORD,DWORD))
GetProcAddress( GetModuleHandle( "ntdll.dll" ),"NtQuerySystemInformation" );
NtQuerySystemInformation(5,pProcInfo,dwInfoSize,0);
pProcessInfo = (PPROCESSINFO)pProcInfo;
do
{
TotalProcessCPUUsage += (__int64)pProcessInfo->KernelTime.QuadPart + (__int64)pProcessInfo->UserTime.QuadPart;
if(pProcessInfo->dwProcessID == GetCurrentProcessId())
{
dwWorkingSet = pProcessInfo->dwWorkingSet;
CurrentProcessCPUUsage += (__int64)pProcessInfo->KernelTime.QuadPart + (__int64)pProcessInfo->UserTime.QuadPart;
}
/
if(pProcessInfo->dwOffset == 0)
{
break;
}
pProcessInfo = (PPROCESSINFO)((byte*)pProcessInfo + pProcessInfo->dwOffset);
}
while(true);
TotalDelta = TotalProcessCPUUsage - LastTotalProcessCPUUsage;
CurrentDelta = CurrentProcessCPUUsage - LastCurrentProcessCPUUsage;
if(TotalDelta != 0)
this->Caption = "CPU = " + IntToStr(100 * CurrentDelta / TotalDelta) +
"Memory = "+ IntToStr(dwWorkingSet / 1024) " K";
LastTotalProcessCPUUsage = TotalProcessCPUUsage;
LastCurrentProcessCPUUsage = CurrentProcessCPUUsage;
delete[] pProcInfo;
}
获得系统中某个进程的cpu使用率相关推荐
- 解决linux 系统中Mysql 进程占用CPU 300%故障
今日接到同事的电话,说微信公共帐号中的游戏无法登陆,用户不能玩了,麻烦尽快解决. 1.登陆IDC机房查看服务器流量图,流量正常,排除故障与流量无关. 2.登陆微信公共帐号中的游戏所在服务器发现系统互载 ...
- linux中yum进程占cpu百分之九十,在Deepin Linux系统中kworker进程占用CPU达到100%的解决...
如果你在Deepin Linux.Debian.Ubuntu系统中遇到kworker进程占用CPU达到100%,可以用以下解决方法解决问题,本文主要内容为问题起因.microcode介绍.解决方法及总 ...
- linux的mysql占用cpu过高_linux 系统中Mysql 进程占用cpu过高的解决
mysql进程CPU使用率过高,开始报警了. 为了快速解决问题直接重启mysql服务后,再查sysql进程CPU使用率依旧高居不下.故障还没有解决,继续寻找原因. 3.登陆mysql数据库,执行sho ...
- 解决linux中Kipmi0进程对CPU使用率很高问题
突然top发现Kipmi0进程一直占用近乎100%的一个核的资源,并且已经持续了很长一段时间. google查不到多少资料,看到一篇说法:是一些平台接口的管理器.不敢贸然杀死,再查查资料. 看看专业的 ...
- android cpu负载 工具,计算Android中进程的CPU使用率
我正在尝试按以下方式计算Android中进程的CPU使用率,但是由于产生的输出,我不确定它是否正确. 要将吉菲转换为秒:吉菲/赫兹 第一步: 使用/proc/uptime文件的第一个参数获取正常运行时 ...
- linux下java多线程_Linux系统下Java问题排查——cpu使用率过高或多线程锁问题
原标题:Linux系统下Java问题排查--cpu使用率过高或多线程锁问题 一个系统.特别是多线程并发的后台系统,在某些特定场景下,可能触发系统中的bug:导致cpu一直居高不下.进程hang了或处理 ...
- Linux系统中的进程管理
Linux系统中的进程管理 了解进程 进程是已启动的可执行程序的运行实例,进程有以下组成部分: • 已分配内存的地址空间: • 安全属性,包括所有权凭据和特权: • 程序代码的一个或多个执行线程: • ...
- Android系统中的进程管理:进程的优先级
本文是Android进程管理系列文章的第二篇,会讲解进程管理中的优先级管理. 进程管理的第一篇文章:<进程的创建>请跳转至这里. 本文适合Android平台的应用程序开发者,也适合对于An ...
- 9.7 top:实时显示系统中各个进程的资源占用状况
top命令 用于实时地对系统处理器状态进行监控,它能够实时地显示系统中各个进程的资源占用状况.该命令可以按照CPU的使用.内存的使用和执行时间对系统任务进程进行排序显示,同时top命令还可以通过交互式 ...
最新文章
- Swift语言指南(十)--字符串与字符
- oracle中导出的sql文件转入mysql中的工作记录
- Mybatis-sql语句的抽取
- ember.js_如何设置基本的Ember.js应用
- spring mvc学习(60):ssm项目整合
- java2的7次方怎么表示_一元二次方程常见题型之方程根的解法
- java特殊类型_java中如何查找某个特定类型作为形参的方法
- .net mysql 参数,在MySQL .NET Provider中使用命名参数
- Atitit 网络编程之道
- 超级计算机更深的蓝,国际象棋发生革命性变化 老棋手深感力不从心
- 我的TLS1.3之旅
- Ubuntu查找文件
- 世界人工智能大会开幕,云计算概念股大涨
- 手机快播安卓版 Qvod player V1.0.19
- 天载网上炒股大盘缩量诱多
- Verilog语言入门
- LDAP 中的 RDN
- EeePC各项硬件参数
- 中国数字油画网 数字油画软件 照片转数字油画 ai制作数字油画
- django 实现统一登录(未完待续)
热门文章
- Eclipse中单元测试
- 使用apache FileUtils下载文件
- word 2013 题注、图注、插入图片自动修改大小、批量更新题注编号
- 2018-2019-1 20189213《Linux内核原理与分析》第四周作业
- Verilog语言实现并行(循环冗余码)CRC校验
- linix防火墙设置之顺序设置问题 -- 解决防火墙规则顺序和插入规则到指定序号的问题...
- LeetCode 111. Minimum Depth of Binary Tree
- [deviceone开发]-do_RichLabel的简单示例
- iOS项目开发— CoreLocation的定位服务和地理编码与发编码实现
- python批量操作Linux服务器脚本,ssh密码登录(执行命令、上传、下载)(一)...