Resharper R#使我的VisualStudio2012每隔几分钟就有9%的CPU使用率加上密集的I/O

Resharper R#使我的VisualStudio2012每隔几分钟就有9%的CPU使用率加上密集的I/O,resharper,Resharper,据进程黑客报告,9%的CPU使用率伴随着异常高的I/O总速率。也就是说,以MB/s为单位,而其余的都以KB/s为单位。它对VisualStudio内部的用户体验有非常显著的影响-它是滞后的 已禁用解决方案范围的分析 巨大的源文件(大小超过1MB)被排除在R之外# 整个源代码树位于SSD驱动器上 一个解决方案包含73个项目。另一个是115个项目 当R#被禁用时,CPU和IO利用率中不会出现这种流入 我浏览了互联网上的各种问答网站。我在那里看到的建议——关闭该功能或该功能对我来说是不可接受的——

据进程黑客报告,9%的CPU使用率伴随着异常高的I/O总速率。也就是说,以MB/s为单位,而其余的都以KB/s为单位。它对VisualStudio内部的用户体验有非常显著的影响-它是滞后的

  • 已禁用解决方案范围的分析
  • 巨大的源文件(大小超过1MB)被排除在R之外#
  • 整个源代码树位于SSD驱动器上
  • 一个解决方案包含73个项目。另一个是115个项目
  • 当R#被禁用时,CPU和IO利用率中不会出现这种流入
我浏览了互联网上的各种问答网站。我在那里看到的建议——关闭该功能或该功能对我来说是不可接受的——我希望R#正好适用于这些功能

有什么想法吗

编辑

我使用Sysinternals进程监视器进行了一些分析。首先,我捕获了异常操作(9%CPU和高I/O)期间以及正常操作期间的事件。捕获格式为CSV,仅保存文件系统事件。在这段时间里,VisualStudio除了使用116个项目的相同解决方案打开外,没有做任何明显有用的事情

这两个日志都可以在7z存档中压缩

除此之外,我还将这两个日志转储到Sql Server 2012数据库中。此处提供了其7z压缩备份-

这两组数据之间的差异是惊人的。我进行了一些查询,结果如下:

SELECT 'Bad',DATEDIFF(second, MIN(ts),MAX(ts)) 'Interval (sec)', COUNT(1) Count FROM LogFile
UNION ALL
SELECT 'Good',DATEDIFF(second, MIN(ts),MAX(ts)) 'Interval (sec)', COUNT(1) Count FROM LogFile2

(No column name)    Interval (sec)  Count
Bad                 96              45814
Good                100             2042
在大致相同的时间间隔内,坏会话捕获的文件系统I/O事件是原来的22倍

接下来,我想查看两个会话正在访问的文件列表

首先是坏会话:

SELECT COUNT(1) Count,Path FROM (
    SELECT CASE 
        WHEN Path LIKE '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuild%\Configuration%.cache"' THEN '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ConfigurationNNNN.cache"' 
        WHEN Path LIKE '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuild%\Results%\GetTargetPath.cache"' THEN '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\GetTargetPath.cache"'
        WHEN Path LIKE '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuild%\Results%\ResolveProjectReferences.cache"' THEN '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\ResolveProjectReferences.cache"'
        WHEN Path LIKE '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuild%\Results%\ResolveAssemblyReferences.cache"' THEN '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\ResolveAssemblyReferences.cache"'
        WHEN Path LIKE '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuild%\Results%"' THEN '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN"'
        ELSE Path END Path FROM LogFile
) data GROUP BY Path HAVING COUNT(1) > 99 ORDER BY COUNT(1) DESC
Count Path
3321  "C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ConfigurationNNNN.cache"
98    "C:\dayforce\SharpTop\UI\Benefits\MyBenefits\obj\Debug\MyBenefits.csprojResolveAssemblyReference.cache"
97    "C:\dayforce\SharpTop\UI\Payroll\PayrollManagement\obj\Debug\PayrollManagement.csprojResolveAssemblyReference.cache"
85    "C:\dayforce\SharpTop\UI\Benefits\BenefitsAdmin\obj\Debug\BenefitsAdmin.csprojResolveAssemblyReference.cache"
82    "C:\dayforce\SharpTop\UI\VacationBidding\obj\Debug\VacationBidding.csprojResolveAssemblyReference.cache"
77    "C:\dayforce\SharpTop\UI\Benefits\BenefitsManagement\obj\Debug\BenefitsManagement.csprojResolveAssemblyReference.cache"
46    "C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\GetTargetPath.cache"
33    "C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\ResolveAssemblyReferences.cache"
15    "C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\ResolveProjectReferences.cache"
现在的结果是:

Count Path
6718  "C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ConfigurationNNNN.cache"
4704  "C:\Users\mkharitonov\AppData\Local\Temp\{181573c4-a37b-468b-9c8a-cbd9a1fbf4dc}\System.Data.SQLite.dll"
4240  "C:\Windows\SysWOW64\atiumdva.cap"
4095  "C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN"
3529  "C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\GetTargetPath.cache"
1022  "C:\Users\mkharitonov"
537   "C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Libraries\Client"
506   "C:\Program Files (x86)\MSBuild\4.0\Microsoft.Common.Targets\ImportAfter"
444   "C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN"
321   "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\mscorlib.dll"
315   "C:\dayforce\SharpTop\UI\DynaPanel\Bin\Debug\DynaPanel.dll"
302   "C:\dayforce\SharpTop\UI\Benefits\MyBenefits\obj\Debug\MyBenefits.csprojResolveAssemblyReference.cache"
295   "C:\dayforce\SharpTop\UI\Payroll\PayrollManagement\obj\Debug\PayrollManagement.csprojResolveAssemblyReference.cache"
262   "C:\dayforce\SharpTop\UI\Benefits\BenefitsAdmin\obj\Debug\BenefitsAdmin.csprojResolveAssemblyReference.cache"
256   "C:\dayforce\SharpTop\UI\VacationBidding\obj\Debug\VacationBidding.csprojResolveAssemblyReference.cache"
252   "C:\dayforce\SharpTop\UI\ControlsEx\Bin\Debug\ControlsEx.dll"
246   "C:\dayforce\SharpTop\UI\Benefits\BenefitsManagement\obj\Debug\BenefitsManagement.csprojResolveAssemblyReference.cache"
234   "C:\Users\mkharitonov\AppData\Local\JetBrains\ReSharper\v8.2\SolutionCaches\_ReSharper.Main.1029040524\CACHES_FORMAT_VERSION"
208   "C:\Users\mkharitonov\AppData\Local\JetBrains\ReSharper\v8.2\SolutionCaches\_ReSharper.Main.1029040524\PersistentCaches"
189   "C:\Users"
189   "C:\dayforce\SharpTop\UI\RuleEngineDataProviderClient\Bin\Debug\RuleEngineDataProviderClient.dll"
189   "C:\dayforce\SharpTop\UI\RuleEngineClient\Bin\Debug\RuleEngineClient.dll"
162   "C:\dayforce\SharpTop\UI\RuleEngineClient\Bin\Debug\DfResources.dll"
153   "C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Libraries\Client\System.Windows.Controls.Data.dll"
153   "C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Libraries\Client\System.Windows.Controls.dll"
153   "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE"
152   "C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\ResolveAssemblyReferences.cache"
151   "C:\dayforce\SharpTop\UI\ClientData\ClientData.csproj"
151   "C:\dayforce\SharpTop\UI\DynaPanel\DynaPanel.csproj"
151   "C:\dayforce\SharpTop\UI\ProxyService\ProxyService.csproj"
151   "C:\dayforce\SharpTop\UI\Controls\Controls.csproj"
151   "C:\dayforce\SharpTop\UI\Utility\Utility.csproj"
150   "C:\dayforce\SharpTop\UI\Controls\Bin\Debug\Controls.dll"
150   "C:\dayforce\SharpTop\UI\ClientData\Bin\Debug\ClientData.dll"
150   "C:\dayforce\SharpTop\UI\ProxyService\Bin\Debug\ProxyService.dll"
150   "C:\dayforce\SharpTop\UI\Utility\Bin\Debug\Utility.dll"
150   "C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Libraries\Client\System.Windows.Controls.Data.Input.dll"
142   "C:\"
138   "C:\Program Files (x86)\MSBuild\Microsoft\Silverlight\v5.0\Microsoft.Ria.Client.targets"
138   "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.ServiceModel.targets"
138   "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Xaml.targets"
138   "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WorkflowBuildExtensions.targets"
138   "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WinFx.targets"
138   "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Data.Entity.targets"
138   "C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe"
138   "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\CodeAnalysis\Microsoft.CodeAnalysis.Targets"
138   "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Fakes\Microsoft.QualityTools.Testing.Fakes.targets"
138   "C:\Program Files (x86)\MSBuild\4.0\Microsoft.Common.props"
138   "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Team Tools\Static Analysis Tools\Rule Sets\NativeRecommendedRules.ruleset"
138   "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\TeamTest\Microsoft.TeamTest.targets"
135   "C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Libraries\Client\System.ComponentModel.DataAnnotations.dll"
135   "C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Libraries\Client\System.Windows.Controls.Input.dll"
135   "C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Libraries\Client\System.Windows.Data.dll"
128   "C:\dayforce\SharpTop\Dependencies\Silverlight5\Toolkit\Bin"
126   "C:\dayforce\SharpTop\UI\AccrualEngineClient\Bin\Debug\AccrualEngineClient.dll"
126   "C:\dayforce\SharpTop\UI\MyReports\Bin\Debug\Dayforce.MyReports.dll"
126   "C:\dayforce\SharpTop\Dependencies\Silverlight5\Toolkit\Bin\System.Windows.Controls.Toolkit.dll"
123   "C:\dayforce\SharpTop\UI\ControlsEx\ControlsEx.csproj"
122   "C:\dayforce\SharpTop\UI\AccrualEngineDataProviderClient\Bin\Debug\AccrualEngineDataProviderClient.dll"
114   "C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Libraries\Client\System.Xml.Serialization.dll"
105   "C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Libraries\Client\System.Xml.Linq.dll"
103   "C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\ResolveProjectReferences.cache"
现在,对于没有
过滤器的良好会话的相同查询(表LogFile2):

人们可以用许多不同的方法检查数据,我想运行的最后一个查询是查看有多少次成功的写入。我使用的查询与以前相同,只是将
WHERE Operation=''WriteFile'和Result='SUCCESS'
过滤器添加到嵌套的select语句中。像这样:

SELECT COUNT(1) Count,Path FROM (
    SELECT CASE 
        WHEN Path LIKE '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuild%\Configuration%.cache"' THEN '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ConfigurationNNNN.cache"' 
        WHEN Path LIKE '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuild%\Results%\GetTargetPath.cache"' THEN '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\GetTargetPath.cache"'
        WHEN Path LIKE '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuild%\Results%\ResolveProjectReferences.cache"' THEN '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\ResolveProjectReferences.cache"'
        WHEN Path LIKE '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuild%\Results%\ResolveAssemblyReferences.cache"' THEN '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\ResolveAssemblyReferences.cache"'
        WHEN Path LIKE '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuild%\Results%"' THEN '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN"'
        ELSE Path END Path FROM LogFile WHERE Operation='"WriteFile"' AND Result='"SUCCESS"'
) data GROUP BY Path ORDER BY COUNT(1) DESC
首先是坏会话:

SELECT COUNT(1) Count,Path FROM (
    SELECT CASE 
        WHEN Path LIKE '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuild%\Configuration%.cache"' THEN '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ConfigurationNNNN.cache"' 
        WHEN Path LIKE '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuild%\Results%\GetTargetPath.cache"' THEN '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\GetTargetPath.cache"'
        WHEN Path LIKE '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuild%\Results%\ResolveProjectReferences.cache"' THEN '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\ResolveProjectReferences.cache"'
        WHEN Path LIKE '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuild%\Results%\ResolveAssemblyReferences.cache"' THEN '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\ResolveAssemblyReferences.cache"'
        WHEN Path LIKE '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuild%\Results%"' THEN '"C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN"'
        ELSE Path END Path FROM LogFile
) data GROUP BY Path HAVING COUNT(1) > 99 ORDER BY COUNT(1) DESC
Count Path
3321  "C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ConfigurationNNNN.cache"
98    "C:\dayforce\SharpTop\UI\Benefits\MyBenefits\obj\Debug\MyBenefits.csprojResolveAssemblyReference.cache"
97    "C:\dayforce\SharpTop\UI\Payroll\PayrollManagement\obj\Debug\PayrollManagement.csprojResolveAssemblyReference.cache"
85    "C:\dayforce\SharpTop\UI\Benefits\BenefitsAdmin\obj\Debug\BenefitsAdmin.csprojResolveAssemblyReference.cache"
82    "C:\dayforce\SharpTop\UI\VacationBidding\obj\Debug\VacationBidding.csprojResolveAssemblyReference.cache"
77    "C:\dayforce\SharpTop\UI\Benefits\BenefitsManagement\obj\Debug\BenefitsManagement.csprojResolveAssemblyReference.cache"
46    "C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\GetTargetPath.cache"
33    "C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\ResolveAssemblyReferences.cache"
15    "C:\Users\mkharitonov\AppData\Local\Temp\MSBuildNNNN\ResultsNNNN\ResolveProjectReferences.cache"
现在是好的会议。等等,好的会话中根本没有写操作(失败和成功都一样)

我想强调的是,只有在启用了R#8并且解决方案足够大时,才会观察到不良行为。当我暂停R#时,一切都很好

让我知道,如果有什么我可以做的,以帮助那里的人来帮助我

编辑2

I/O使用不太稳定,有时高,有时低。但是9%的CPU非常稳定,对机器来说也不算什么,但是它使得VisualStudio几乎不可用

一旦我暂停R#,一切都会恢复正常。但是,我没有R#

附言


对于那些仍在使用R#8并且正在遭受痛苦的人,解决方案是按照

中的建议进行升级。我最近升级到了Visual Studio 2015和Resharper 9。与Visual Studio 2012相比,体验更加流畅,出现的问题也更少。

除了此之外,没有其他任何不愉快的事情。。。“一个解决方案包含73个项目。另一个解决方案包含115个项目”它的行为是否与10个项目的解决方案相同?I/O在做什么?“你看了吗?”约翰萨恩斯-我很乐意,怎么看?