GetQueuedCompletionStatus会在可调整的情况下导致CPU峰值?

时间:2018-05-04 14:14:18

标签: c# chromium chromium-embedded cefsharp

enter image description here

第一个峰值有点像我自己的代码,但第二个突出显示不是,而且似乎来自" KERNELBASE" (KERNELBASE!GetQueuedCompletionStatus)或libcef.dll(Chromium与CEFSharp一起使用)。

正如你所看到的,它飙升至100%并且保持100%。它将保持这样5-10秒。你可以通过视觉工作室不能继续它的计时程序来判断它是否真的百分之百,因此它看起来像是一个1毫秒的峰值。

所以在我的结尾,为了实现这一点,我所要做的就是在我的应用程序上启动某个功能(它的async / await循环),如果我要在尖峰之前暂停它(使用semaphoreslim)发生了,它仍然会飙升。本质上意味着它不是我的代码。一旦我启动async / await循环,Spike每次都会在同一时间发生。它开始后大约11-12秒就会发生。

起初我认为它是由使用CEFSharp的C# - >引起的。 JS通信的东西,但它似乎不太可能测试我已完全使用它删除了所有代码。

经过研究,一些人有类似的问题,因为英特尔的智能功能通常出现在2010年的英特尔Pentiums中。但我使用的是英特尔i7-7700k所以这是不太可能的。

奇怪的是,只有在我使用代码的代理变体时才会发生这种情况。如果我在没有代理的情况下执行代码,则不会发生尖峰。意味着它有点缩小,但我仍然无法弄清楚为什么它会发生。

任何调试的想法将不胜感激。 由于其性质,我实际上无法提供任何代码,因为它可能出现在我的300多行代码中。

@HansPassant告诉我尝试禁用我的反病毒,奇怪的是,这有效(Somewhat)。 enter image description here

它可能看起来通常是更多cpu使用,但那是因为我重新启用了所有C# - > JS通信代码。但是2开始的主要话题和主要话题都停留在"尖刺"为了减少。第一个,像idk半秒,第二个,大约1-2秒钟。

所以它确实提供了很好的帮助,但正如你所看到的,CEFSharp由于某些原因导致CPU占用率仍然很多。

0 个答案:

没有答案