首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CPU周期与CPU总时间之比

CPU周期与CPU总时间之比
EN

Stack Overflow用户
提问于 2016-09-17 16:33:42
回答 1查看 1.4K关注 0票数 0

在Windows上,GetProcessTimes()和QueryProcessCycleTime()可以用于获取应用程序的所有线程的总数。我期望(显然很天真)在总周期数和总处理器时间(用户+内核)之间找到一个成比例的关系。当转换为相同的单位(秒)并以应用程序运行时间的百分比表示时,它们甚至不接近;它们之间的比率差别很大。

在一个应用程序启动后,它们就已经相当接近了。

代码语言:javascript
复制
3.6353% CPU cycles
5.2000% CPU time
0.79    Ratio

但是,随着应用程序的闲置(在11个小时之后,大部分时间处于空闲状态),这一比率会增加。

代码语言:javascript
复制
0.0474% CPU cycles
0.0039% CPU time
12.16   Ratio

显然,计算周期对用户或内核时间没有贡献。我很好奇它是怎么工作的。请指点我。

谢谢。

  • 文斯
EN

回答 1

Stack Overflow用户

发布于 2016-09-17 18:50:15

GetProcessTimes和QueryProcessCycleTime值是以不同的方式计算的。GetProcesTimes/GetThreadTimes是响应计时器中断而更新的,而QueryProcessCycleTime值则基于对实际线程执行时间的跟踪。当使用和比较这两种API结果时,这些不同的测量方法可能会导致非常不同的计时结果。特别是由于GetThreadTimes只为其线程计数器包含完全完成的时隙值(请参阅http://blog.kalmbachnet.de/?postid=28),这通常会导致不正确的时间安排。

由于GetProcessTimes通常报告的时间少于实际花费的时间(因为不总是完成它的时间切片),因此与周期测量百分比相比,它的CPU时间百分比会随着时间的推移而减少。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39549164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档