【问题标题】:Visual Studio CPU High UsageVisual Studio CPU 使用率高
【发布时间】:2016-04-07 18:37:18
【问题描述】:

这是我有任何 Visual Studio(2010 专业版、2012 专业版和 2015 社区版)的一周,几分钟后我开始了一个项目,甚至是空的,没有接触任何东西,启动一个完全消耗一个内核的线程,100%用法。 从任务管理器中我看到 devenv.exe 消耗了 25% 的 CPU,我有 4 个内核,所以 100/4=25。

通过使用 Process Explorer,我看到 clr.dll (clr.dll!GetCLRFunction+10793) 持续运行。

这是线程的堆栈跟踪:

ntoskrnl.exe!KeWaitForMultipleObjects+0xc0a 
ntoskrnl.exe!KeAcquireSpinLockAtDpcLevel+0x712
ntoskrnl.exe!KeWaitForSingleObject+0x19f
ntoskrnl.exe!PoStartNextPowerIrp+0xba0
ntoskrnl.exe!PoStartNextPowerIrp+0x183d
ntoskrnl.exe!IoFreeErrorLogEntry+0x297
System.ni.dll+0x19ab70
System.ni.dll+0x1de979
System.ni.dll+0x19ab70
System.ni.dll+0x199d42
System.ni.dll+0x1ded86
System.ni.dll+0x1de5fa
System.ni.dll+0x1de397
System.ni.dll+0x1da636
System.ni.dll+0x1c755e
System.ni.dll+0x19ebfb
System.ni.dll+0x19eccf
clr.dll+0x1396
clr.dll+0x291f
clr.dll!PreBindAssemblyEx+0x1822c
clr.dll!PreBindAssemblyEx+0x183af
mscorlib.ni.dll+0x2f1213
mscorlib.ni.dll+0x2f103e
mscorlib.ni.dll+0x2ffb72
mscorlib.ni.dll+0x30a366
mscorlib.ni.dll+0x2ffd30
mscorlib.ni.dll+0x3aebef
mscorlib.ni.dll+0x3aeaba
clr.dll+0x291f
clr.dll+0x9aff
clr.dll!PreBindAssembly+0xb165
clr.dll!PreBindAssembly+0x9653
clr.dll!PreBindAssembly+0x96bd
clr.dll!PreBindAssembly+0x978a
clr.dll!PreBindAssembly+0x9805
clr.dll!PreBindAssembly+0xb0f9
clr.dll!PreBindAssembly+0xa166
clr.dll!GetCLRFunction+0x107dc
ntdll.dll!RtlInitializeExceptionChain+0x63
ntdll.dll!RtlInitializeExceptionChain+0x36

有人从上面的几行中明白了什么吗??

在互联网上,我发现了一些禁用 Visual Studio 的一个或另一个插件/扩展的建议,但没有一个能解决问题,而且我在所有 VS 版本上都有问题(扩展名不同,发生在同时)

我认为这与我最近更新的 .net framework 4.5 ~4.6 有关。 如何理解问题出在哪里以及如何解决?

【问题讨论】:

  • 解决方法:我已卸载 .Net framework 4.6.1 SDK。没有它,任何 Visual Studio 都无法运行(2010、2012 和 2015)。重新安装后问题消失了
  • 不,我什么都没解决!问题依然存在。每次保存编辑文件(cs、js、html、aspx ...)时都会发生这种情况,即使我只插入了一个空格。

标签: .net visual-studio visual-studio-2010 visual-studio-2012


【解决方案1】:

要了解 Visual Studio 为何会导致如此高的 CPU 使用率,您需要安装 Windows 性能工具包,它是 Windows 10 SDK 的一部分(如果您使用 Windows 7,use the SDK Build 15086,这是最后一个适用的版本Windows 7、Windows 8、8.1 或 Windows 10 使用来自最新 Windows 10 SDK 的 WPT。

(所有其他条目都可以取消选择)

运行WPRUI.exe,选择First LevelCPU Usage并点击start。捕获 1 分钟的 CPU 使用情况,现在单击 Save 将数据保存到 ETL 文件中。

现在双击生成的 ETL 文件在 Windows Performance Analyzer (WPA.exe) 中打开 ETL,拖放 CPU Usage (Sampled) 到分析窗格:

现在load debug symbols in WPA 并展开devenv.exe 的堆栈

在我的情况下,Telerik 扩展会导致 Visual Studio 中的 CPU 使用率。

【讨论】:

  • 谢谢,我仍然在 Windows 7 上运行。我已经通过卸载所有内容然后重新安装解决了这个问题。问题可能是由于 Telerik 扩展,我也在使用它。
  • 这个也可以和Windows 7一起使用,只要使用15086 SDK即可。我昨天遇到了这个问题,如果已经有问题可以向用户展示如何调试这个问题,请查看这里。
【解决方案2】:

当我正在使用的第 3 方本机库调用 _controlfp 以更改浮点精度时,我个人遇到过这种情况。在 CLR 下运行时不支持这样做。即使它是在执行代码中完成的,它也会锁定我的 devenv.exe。

我怀疑你有同样的问题,但这是我为找到它所做的。


如果您可以可靠地重新创建它,请在 2015 年单击快速启动旁边右上角的人形图标并执行“报告问题”。

在新窗口中选择问题区域“集成开发环境”,然后展开“记录您的操作以重现问题”并选择项目“要重现崩溃或挂起,请附加到另一个 Visual Studio 实例。”。启动另一个 Visual Studio 副本,您应该会看到它已列出。

这将记录ETW log 并将其放入您点击提交时将发送的错误报告中。日志将保存在%TEMP%\Microsoft\VSFeedbackCollector 下(您可能需要在发送报告之前获取一份副本,因为我认为一旦发送报告就会删除文件)。

获得 etl 文件后,您可以在您选择的 etl 查看器中打开它,开始深入研究导致高 CPU 负载发生的原因。

【讨论】:

  • 谢谢,我会做的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
  • 2016-07-09
  • 2021-12-09
  • 2014-07-16
  • 2014-08-24
相关资源
最近更新 更多