VS 2010中內核窗戶問題解析

來源: IT專家網  發布時間: 2010-11-18 21:59  閱讀: 600 次  推薦: 0   原文鏈接   [收藏]  
摘要:隨著微軟Visual Studio 2010和.NET Framework 4.0的推出,微軟向開發人員提供了創建多線程應用程序的更好的工具和類庫。在這篇文章中,筆者將為您介紹Concurrency Visualizer的新功能是什么以及它能夠提供什么類型的信息。

  隨著微軟Visual Studio 2010和.NET Framework 4.0的推出,微軟向開發人員提供了創建多線程應用程序的更好的工具和類庫。在這篇文章中,筆者將為您介紹Concurrency Visualizer的新功能是什么以及它能夠提供什么類型的信息。

  要把Visual Studio 2010的Concurrency Visualizer功能真正地應用到業務中,你需要點擊最初的資源沖突表上面的三個按鈕。讓我們首先點擊左邊的處理器利用率圖表(見圖4)。

  這個處理器利用率圖表顯示你的應用程序如何在使用處理器的整個狀況的一個可視化的指標。這個圖表顯示Windows可用的邏輯處理器的數量。例如,在上面的圖表中,一個英特爾酷睿2雙核處理器在這個操作系統中啟用了兩個邏輯處理器。

  雖然這個剖析會話已經就位,但是,Visual Studio不僅要收集有關你的應用程序的信息,而且還要收集這個系統中每一個其它進程使用處理器的信息。采用默認的顏色方案,你自己的應用程序的處理器利用率用綠色顯示,其它進程用黃色顯示,空閑時間用灰色顯示。

  在屏幕的上方,你可以看到一個滑動條。你可以使用這個滑動條放大和縮小這個圖表。你還可以選擇這個圖表中的一個區域直接放大到選擇中。這個圖表是以時間為基礎的:時間從左邊向右邊運行并且按照毫秒(也就是千分之一秒)顯示。

  成功的線程的一個指標是你的應用程序的處理器使用能夠超過一個邏輯處理器的限制。如果你的應用程序是計算密集型的,你的應用程序的綠色區域越接近圖表的頂端,這個應用程序利用系統中多個邏輯處理器的效率就越高。

  Visual Studio提供的第二個、也是更有趣的圖表是線程圖表。要啟動這個圖表,可點擊這個窗口上方的線程按鈕,或者在上面的當前窗口下拉式菜單中選擇同樣名稱的窗口。

  這個線程圖表(圖5)顯示在你的應用程序生命周期期間存在的全部線程,當你執行這個應用程序的時候顯示綠色,在等待同步的時候顯示為紅色,在執行輸入/輸出操作的時候顯示紫色,或者在休眠的時候顯示為藍色。你看的圖表中的綠色線條越多,通常就越好。此外,除了這個線程之外,你在上面還能看到兩條線,用于監視硬盤讀和寫。如果你有一個以上的硬盤,那么,每一個硬盤都要增加兩條線。

  再說一次。你可以使用鼠標放大這個圖表或者選擇使用上面的放大滑動條。你還可以從左上角排序這個圖表。在默認狀態下,線程是按照開始時間排序的。但是,你還可以通過監視的操作或者停止時間排序。

  除了基本的排序之外,這個線程圖表允許你使用頂端的箭頭按鈕按照方便的次序排列線程。這個功能是有用的,如果你需要比較兩個或者更多的線程的功能的話。通過把這些線程相互之間緊密地排列在一起,你的工作會更容易。

  當你要微調一個特定時間段的時候,這個線程圖表中顯示的線程圖表完全是可點擊的。這意味著在放大到足夠近的時候,你能夠看到以不同顏色表示的段。你可以點擊每一個段查看一個特定的段的詳細信息。還需要指出的是,每當你點擊一個段的時候,Visual Studio如何在這個圖表下面給你一些額外的指令。

  每當你在線程圖表中點擊一個段的時候,你在這個圖表下面都能看到包含有趣的信息的額外標簽。例如,Visual Studio能夠向你顯示一個所謂的解除封鎖的棧。這個棧向你提供有關允許另一個線程運行的一個線程的信息。這個示意標簽也是有用的。這個非神秘化(Demystify)按鈕向你提供有關這個產品中的一個特定功能的更多信息。Concurrency Visualizer功能提供的第三個主要窗口叫做內核(Cores)。從技術上說,這個名稱不是很準確,因為這個內核功能的目的是顯示你的應用程序利用系統中的多個邏輯處理器的效率如何。

  然而,這個內核功能將發揮作用,即使你有多個物理處理器而不是多個內核。這種情況的發生是因為對于操作系統來說,一個物理處理器或者處理器中的多個內核是一樣的:它們都是邏輯處理器,都能夠在上面執行線程。但是,即使有這么小一點的技術準確性,“內核”這個詞在這個案例中有理由是正確的,因為目前的大多數系統事實上都是采用多核處理器,而不是采用多個處理器。

  這個內核窗口(見圖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把新的并行棧與并行任務結合在一起,這將更容易保證你的應用程序最充分地利用現代的多核處理器。

0
0
 
標簽:VS 2010 內核
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()