我在Windows中使用Process Explorer来检查一个进程。
当我看到这个进程的属性中的线程标签时,我看到1个cpu使用率很高的线程(双核心服务器总cpu的〜30-49%,所以它使用大量的cpu时间,如果你把这个单线程一个cpu时间值一个时间间隔)。
现在,如果我坐下来观察这个线程,那么其98%的时间处于“就绪”状态,而另一个时间处于“正在运行”状态。 为了更好地说明这个问题:
t=0,cpu = 35,State = Ready t=1,cpu = 49,State = Ready t=2,cpu = 50,State = Ready t=3,cpu = 39,State = Ready t=4,cpu = 32,State = Ready t=5,State = Ready t=6,cpu = 37,State = Running t=7,cpu = 40,State = Ready t=8,cpu = 42,State = Ready t=9,cpu = 43,State = Ready
处于就绪状态时,该线程如何使用这么多的cpu?
如何通过现有的过程来模拟高cpu峰值
多个进程在多个fork(Linux / C)之后卡在同一个cpu上
为什么Windows 64select要求保存/恢复xmm6和xmm7?
提前谢谢你的帮助!
如何修改cpucachingL1,cachingL2和cachingL3?
nanosleep高cpu使用率?
如何计算cpu使用率?
Java过程挂100%cpu
为GetLogicalProcessor@R_961_4045@ion函数调用PInvoke
这是标准的海森堡在工作,你看到的是受到观察行为的影响。 为了使Process Explorer能够为正在运行的线程创建快照,它需要自己获取处理器。 这使得它不太可能,特别是在2核心处理器上,另一个线程可能正忙于执行。 “准备就绪”意味着线程处于活动状态,但是在创建快照时却没有机会获得处理器。
状态只能在多核处理器上可靠。 Mark Russinovich使用的那种:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。