有没有办法衡量工作如何在核心之间传播?

时间:2012-07-25 17:36:28

标签: c# .net performance parallel-processing task-parallel-library

我想知道,有没有可靠的方式来查看(或测量)我的应用程序的工作分配到服务器核心的程度如何?想到的唯一(非常不科学的)选择是:

  1. “关注”任务管理器中的CPU图表
  2. 让应用程序在每项工作完成后不断向控制台写出Thread.CurrentThread.ManagedThreadId
  3. 当然有更好的选择吗?

    背景 我的应用程序侦听传入的数据包,执行一些内存工作,并将内容写入数据库。 我的目标平台是具有四个核心的Windows Server计算机。我的应用程序的第一个版本显然使用了一个核心,其他三个大部分都是空闲的。我使用Task.Factory.StartNew()部署了第二个版本,试图在每次收到数据包时在其他核心之间分配工作。现在看起来所有核心比我的第一个应用程序中的单核心更繁忙。

1 个答案:

答案 0 :(得分:2)

  

Concurrency Visualizer使您可以查看您的   多线程应用程序与自身,硬件,   操作系统和计算机上的其他进程。这些观点   提供显示时间的图形,表格和文本数据   程序中的线程与系统之间的关系   整体。

http://msdn.microsoft.com/en-us/library/dd537632.aspx