Visual Studio CPU高使用率

问题描述:

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

通过使用Process Explorer中我已经看到了为clr.dllclr.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有关。 我怎样才能理解问题在哪里以及如何解决?

+0

解决方法:我已卸载.Net框架4.6.1 SDK。没有它,Visual Studio无法运行(2010,2012和2015)。重新安装后,问题消失 – Giox

+0

不,我没有解决任何问题!问题依然存在。每当我保存一个已编辑的文件(cs,js,html,aspx ...)时,它就会发生,即使我只插入了一个空格。 – Giox

当我正在使用第三方本地库时,我亲自跑到这一次,并致电_controlfp更改浮点精度。这样做在CLR下运行时不受支持。即使它是在执行的代码中完成的,它会锁定我的devenv.exe。

我怀疑你有同样的问题,但这是我做了什么来追踪它。


如果你能可靠地重新创建,2015年点击在旁边快速启动右上角的人形图标,做“报告问题”。

enter image description here

在新窗口中选择问题区域“集成开发环境”,然后展开了“记录你的操作重现该问题”,然后选择项目“重现崩溃或挂起,连接到另一个Visual Studio实例“。开始另一个Visual Studio的副本,你应该看到它列出。

enter image description here

这会是一个ETW log的记录,并把它的bug报告,当你点击提交就会发送。该日志将被保存在%TEMP%\Microsoft\VSFeedbackCollector(您可能希望在发送报告之前获取它的副本,因为我认为它会在发送报告后删除文件)。

一旦你有了etl文件,你可以在你选择的etl查看器中打开它,开始挖掘导致高CPU负载发生的原因。

+0

谢谢,我会这样做 – Giox

要了解为什么Visual Studio会导致如此高的CPU使用率,您需要安装Windows Performance Toolkit,它是Windows 10 SDK的一部分(如果您使用的是Windows 7,use the SDK Build 15086,它是Windows 7上的最新版本,对于Windows 8,8.1或Windows 10使用最新的Windows 10 SDK中的WPT)。

enter image description here (所有其他条目可以未选中)

运行WPRUI.exe,选择第一级CPU使用率并点击开始。捕获1分钟的CPU使用率,现在点击保存将数据保存到ETL文件中。

现在就生成的ETL文件双击在Windows性能分析器(WPA.exe),拖动打开ETL拖放CPU占用率(采样)来分析窗格:

enter image description here

现在load debug symbols in WPA扩大的devenv.exe

enter image description here

在我的情况堆栈中的Telerik的扩展导致Visual Studio中的CPU使用率。

+0

谢谢,我仍然在Windows 7上运行。我已经解决了这个问题,卸载所有内容然后重新安装。可能这个问题是由于Telerik扩展造成的,我也使用它。 – Giox

+0

这也可以与Windows 7一起使用,只需使用15086 SDK即可。我昨天遇到了这个问题,看看是否已经有问题向用户显示如何调试此问题。 – magicandre1981