我试图衡量长时间运行过程中的CPU利用率水平。我怀疑每次运行task-manager查看数据时,由于taskmanager具有更高的优先级,因此进程的CPU利用率下降。如果我给予我的进程实时优先级,那么任务管理器完全锁定,我无法使用它。我希望我的大部分CPU周期专用于此过程,并且我想大致了解它的使用量。我不需要一秒钟的显示器,只需要几张快照让我知道发生了什么。我怎样才能做到这一点?衡量/测量没有TaskMgr的CPU使用率?
回答
编程方式使用C API,你可以使用性能计数器API。 (CPU使用率只是另一个计数器)。您可以使用low-level registry API to query the performance counter作为数据。或者你可以使用PDH API(性能数据助手API) - 这可能是你想要的。我已经在过去使用过,PDH api很容易使用。
另一个帮助枚举可用计数器名称的工具是perfmon。 (只需运行c:\ windows \ system32 \ perfmon.exe)。它也是任务管理器的有用替代方案。它也做记录和图表。您可以为多处理器上的每个逻辑处理器设置计数器。
C API无法访问,但对perfmon有很好的建议!我总是忘记使用该工具。本文有帮助:http://adminfoo.net/2007/04/windows-perfmon-top-ten-counters.html – SFun28 2010-11-08 17:31:03
或许procdump - 但sysinternals process tools的人应该帮助
我不知道你对任务管理器的关注是有效的。任务管理器足够轻便,不会淹没长时间运行的进程并窃取足够的CPU周期。如果你的过程真的是那个CPU饿了,你会在任务管理器中看到它。如果你没有看到你所期望的CPU使用率太高,那么你的假设是你的过程需要一段时间,因为它使用了大量的CPU是错误的。也许你的长时间运行过程是长时间运行的,因为它的IO限制或等待事件或睡眠很多。即做其他事情比使用CPU。如果它使用大量CPU但不是100%,或许它的效率不如我上面列出的相同原因。
你可以写在行通过GetProcessTimes
一些微不足道的工具,查询这个特定的进程(通过ID,比如):
main()
HANDLE h = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, id);
for(;;) {
GetProcessTimes(h, /*..times.. */);
printf("time taken %d\n", (kerneltime+usertime));
Sleep(1000);
}
我敢肯定,在.net中可能有这样做的方法。我在十年内没有碰过C++。寻找一个开箱即用的工具。将尝试这个职位上的其他建议像perfmon和sysinternals的东西。 – SFun28 2010-11-08 17:26:16
@马丁贝克特:procmon中,您可以看到详细的CPU使用率在特定的工艺
- 1. 测量程序的CPU/RAM使用率
- 2. 不可测量的CPU使用率?
- 3. 如何测量CPU使用率
- 4. 有没有办法让WinRT应用程序测量自己的CPU使用率?
- 5. 高MySQL CPU使用率但没有大量查询
- 6. 测量CPU频率缩放效果
- 7. 测量C++和Java进程的CPU使用率
- 8. 测量Maple函数的执行时间和CPU使用率
- 9. Android - CPU使用率和电量消耗
- 10. Postgres常量CPU使用率30%
- 11. 如何在后台任务中精确测量CPU使用率?
- 12. 电池&CPU使用率和温度测量结果意味着
- 13. CPU时间测量
- 14. 如何测量Mesos中每个容器的CPU利用率?
- 15. 测量新/旧代码的CPU占用率,对特定功能
- 16. 有没有办法来测量JavaScript的CPU处理滞后
- 17. 衡量一个进程独立的CPU核心使用情况?
- 18. 摆率测量
- 19. 如何获取作为taskmgr的CPU使用情况? C#
- 20. CPU使用率( “”)
- 21. CPU使用率
- 22. 衡量cpu使用儿童但不是孙子
- 23. Spark CPU利用率监测
- 24. 测量裸机ARM Cortex A9系统的CPU效率
- 25. 限制java应用到特定量的CPU使用率
- 26. 有没有办法使用Google Analytics测量协议的采样率
- 27. 您使用什么工具衡量衡量指标的绩效?
- 28. 使用matlab来衡量挑选彩色卡片的概率
- 29. 衡量有趣吗?
- 30. 测量CPU和子进程
做的特性*不*设置你的进程,以实时,如果你想别的运行(如您的鼠标光标)。 – Gabe 2010-11-06 21:06:07