在Visual Studio中测试GC压力

时间:2014-10-23 21:33:29

标签: .net visual-studio load-testing performance-testing

我正在Visual Studio 2012 Ultimate中运行负载测试。负载测试仅重复执行单个MsTest单元测试。

我想知道我的代码创建的GC有多大的压力。我无法知道如何做到这一点。

我首先在load-test提供的默认列表中查找与内存相关的计数器。默认情况下,负载测试运行将使以下类别中的可用计数器:

  • 总体
  • < Scenario Name>
  • 计算机
  • 错误

"计算机"选项扩展为提供多个选项,其中一个是" Memory。"当我扩展"记忆"时,我看不到任何与GC有关的内容。

现在是时候将其他计数器添加到默认列表中了。

为此,我打开负载测试定义并转到"计数器组"并选择"添加自定义计数器组。"然后我"添加计数器"并选择" .NET CLR Memory"。我要求"所有柜台"和"所有实例"。

当我运行负载测试时,我没有看到任何方式报告这些新计数器或显示在图表中。 "计数器窗格"不幸的是,我显示了与我开始时相同的选择列表。执行负载测试没有显示使用或监控新添加的计数器的任何迹象。

我错过了什么?

更新

根据John O.的输入,我添加了" .NET CLR Memory"反对"代理"计数器。这确实允许新计数器可以在" Counter"窗格并在图表中可见。但是,当我选择" .NET CLR Memory"时,我也可以选择"实例"柜台将覆盖。我不知道选择哪一个:

  • 全球
  • BuildNotification
  • DEVEN
  • devenv#1
  • devenv#2
  • 的MSBuild
  • MSBuild#1
  • MSBuild#2
  • SCNotification
  • TfsComProviderSvr
  • TfsComProviderSvr#1
  • vstest.discoveryengine.x86

上面的多个实例,例如devenv#1和devenv#2,显然代表了我目前在桌面上打开的三个Visual Studio实例。但是这仍然没有告诉我上面哪个项目应该选择,以便柜台能够看到"看看"仅在我的负载测试代码中。我选择了"所有实例"单选按钮,但我更愿意知道我应该选择什么。

2 个答案:

答案 0 :(得分:1)

听起来你正在添加一个全新的计数器集。计数器集中的计数器不会出现在负载测试结果中,除非该集合映射到“运行设置”中。负载测试定义的一部分。

您需要做的是将其他计数器添加到现有的一个计数器集中。

在负载测试定义中右键单击“代理”。计数器设置(我假设你想测量执行测试的代理机器上的内存)并选择“添加计数器”。从这里做你以前做过的事。

现在,由于代理商'计数器集应该已经映射到“运行设置”中,您应该会在下次运行测试时看到可用于绘图的计数器。

<强>更新

由于您要将内存计数器添加到新计算机,因此您的问题中的原始步骤是正确的方法。您只需将新的计数器集映射到您想要测量的任何机器。

  1. 打开负载测试定义,转到&#39;计数器集&#39;并选择添加自定义计数器&#39;。
  2. 选择.NET CLR内存&#39;并保存新的计数器集
  3. 现在转到“运行设置”&#39;负载测试定义的一部分。右击“计数器设置映射”&#39;并选择“管理计数器集...”
  4. 将出现一个新的对话窗口。点击“添加计算机”&#39;按钮。
  5. 输入要测量GC压力的框的机器名称。单击机器旁边的[+]。
  6. 应该出现一堆节点,显示计数器集,您也可以映射机器。您应该会看到您创建的计数器集 - 检查它并单击“确定”
  7. 现在,负载测试定义应显示您在“计数器集映射”中测量GC的机器。部分。

答案 1 :(得分:0)

收集数据并绘制图表是两个独立的活动。

在Visual Studio中打开测试结果并查看可用的图形。使用其中一个图表的上下文(右键单击)菜单,然后选择添加图表。在计数器窗格中选择要绘制的计数器,然后将其拖到新图表上或使用其上下文菜单并选择在图表上显示计数器

可以将单个计数器添加到图表中。通常,可以添加树中各个计数器之上的一个级别,但不能添加更高级别。额外的计数器也可以添加到一些标准图表中。

在测试运行时也可以添加新图表。