解析:VS 2010中内核窗户问题解析。

 再说一次。你可以使用鼠标放大这个图表或者选择使用上面的放大滑动条。你还可以从左上角排序这个图表。在默认状态下,线程是按照开始时间排序的。但是,你还可以通过监视的操作或者停止时间排序。

  除了基本的排序之外,这个线程图表允许你使用顶端的箭头按钮按照方便的次序排列线程。这个功能是有用的,如果你需要比较两个或者更多的线程的功能的话。通过把这些线程相互之间紧密地排列在一起,你的工作会更容易。

  当你要微调一个特定时间段的时候,这个线程图表中显示的线程图表完全是可点击的。这意味着在放大到足够近的时候,你能够看到以不同颜色表示的段。你可以点击每一个段查看一个特定的段的详细信息。还需要指出的是,每当你点击一个段的时候,Visual Studio如何在这个图表下面给你一些额外的指令。

  每当你在线程图表中点击一个段的时候,你在这个图表下面都能看到包含有趣的信息的额外标签。例如,Visual Studio能够向你显示一个所谓的解除封锁的栈。这个栈向你提供有关允许另一个线程运行的一个线程的信息。这个示意标签也是有用的。这个非神秘化(Demystify)按钮向你提供有关这个产品中的一个特定功能的更多信息。Concurrency Visualizer功能提供的第三个主要窗口叫做内核(Cores)。从技术上说,这个名称不是很准确,因为这个内核功能的目的是显示你的应用程序利用系统中的多个逻辑处理器的效率如何。

  然而,这个内核功能将发挥作用,即使你有多个物理处理器而不是多个内核。这种情况的发生是因为对于操作系统来说,一个物理处理器或者处理器中的多个内核是一样的:它们都是逻辑处理器,都能够在上面执行线程。但是,即使有这么小一点的技术准确性,“内核”这个词在这个案例中有理由是正确的,因为目前的大多数系统事实上都是采用多核处理器,而不是采用多个处理器。

  这个内核窗口(见图6)允许你看到一个时间表,在这个系统上的每一个逻辑处理器上能够执行多少工作。就像使用其它两个窗口一样,你可以方法内核图片,把鼠标放在时间表上查看更多的细节。这个图表上的每一个线程都有不同的颜色,图表的下面显示文字说明。如果你的应用程序包含十几个线程,发现不同的颜色是很困难的,但是,在大多数情况下,这个图片的是很容易使用的。

  图6

  理解图片

  要能够看到关于你的线程的详细信息和这些线程是如何运行的对于开发人员的工具箱都是一个极好的增加的工具。然而,你编写的应用程序越复杂,理解这些图片和细节的含义就越重要。如果把事情简化一些,目前开发人员最紧迫的需求是保证应用程序能够最充分地利用当前处理器的多个内核。这个事情本身就有些复杂,但是,当你要保证你的代码开足油门运行的时候,这个事情就会更复杂。这要求理解不同的性能瓶颈以及它们如何在微软Visual Studio显示的不同的剖析图表中表现自己。

  完全理解这些图表是另一篇文章的话题。但是,你首先可以从一个很好的小的Visual Studio 2010帮助主题开始。这个主题的名称是“行为糟糕的多线程应用程序的常见方式”,可以在网络上的MSDN说明文件中找到。

  结论

  在这篇文章中,我们学习了名为“Concurrency Visualizer”的Visual Studio 2010的新功能是什么以及它能够提供什么类型的信息。此外,你了解到你至少需要一个高级版本的微软Visual Studio软件来使用这个功能。即使使用高级版本,你还需要使用至少Windows Vista操作系统。

  特别是如果你在使用Task Parallel Library (TPL,任务并行库)或者PLINQ连接你的应用程序,那么,你将从微软Visual Studio 2010中提供的新的调试和剖析工具中得到极大的好处。例如,通过使用Concurrency Visualizer把新的并行栈与并行任务结合在一起,这将更容易保证你的应用程序最充分地利用现代的多核处理器。

 

posted @ 2010-08-09 16:34  相濡以沫  阅读(177)  评论(0编辑  收藏  举报