VTune性能分析器簡介

7.2.1 VTune性能分析器簡介

Intel VTune性能分析器即Intel? VTune? Performance Analyzer可以幫助程序員定位並定性程序中與性能有關方面的內容。

Intel? VTune性能分析器也可以在程序運行的系統平臺上自動收集性能數據,並將所獲得的性能數據在各個不同的層次,大到系統層,小到程序源代碼級,甚至可以到處理器指令集,進行不同粒度的交互式可視化,幫助查找可能的性能瓶頸,並提供可能的解決方案。

VTune既可以在本地,也可以遠程收集性能數據,並在本地進行數據的處理、分析以及顯示。

既支持圖形界面,又有靈活的命令行模式(支持腳本語言批處理)

英特爾VTune的性能數據收集及優化分析無需對程序進行重新編譯 ,支持包括Microsoft Visual Studio.NET、英特爾C/C++Fortran編譯器、Compaq Visual FortranJAVABorland編譯器(DelphiC++ Builder)以及IBM Visual Age

VTune性能分析器的主要功能包括:

l     低開銷採樣給系統性能評測提供依據

VTune性能分析器中的採樣功能能夠幫助開發者尋找程序中的熱點區域——最耗時間的模塊、函數、代碼或彙編指令,並提供當前操作系統中運行的應用程序的進程、線程、模塊、函數以及代碼等的各種視圖,並在性能參數表格內將具體參數值列出來。

l     提供源代碼級的性能問題信息

VTune源代碼視圖和反彙編代碼視圖中確切地顯示出哪些代碼行最耗時,佔用最多的CPU執行時間等等。

l     使用調用曲線圖評測查找關鍵路徑

調用曲線圖通過分析程序運行時函數的入口點和出發點,生成一張調用曲線圖並且確定調用順序和以圖形方式顯示關鍵路徑,它還可以顯示瓶頸的上下文。通過調用曲線圖,開發人員不僅可以瞭解到應用程序將時間花費在何處,還可以瞭解應用程序是如何達到此處的,並可以查看哪些函數花費的處理時間或被堵塞的時間最長。

l     使用計數器監視器確定系統問題

計數器監控器在運行時跟蹤系統活動,確定是否會因爲可用內存減少或文件輸入輸出性能的問題而導致應用程序速度變慢,使用計數器監視器可在運行時跟蹤系統活動與資源消耗情況,從而有助於快速確定系統層面的性能問題。例如,它可以指示可用內存減少或同文件 I/O 相關的性能問題是否會降低應用程序的運行速度等。

l     使用英特爾? 調試助理查詢專家知識庫

英特爾? 調試助理可根據豐富的知識庫分析性能問題,自動推薦代碼改進的辦法,進而可提高開發者的工作效率。

l     可以對基於Intel PXA250PXA255PXA27x處理器系統上的應用程序進行取樣和分析。

7.2.2 VTune性能分析的使用

Intel VTune性能分析器從使用功能上,可分爲:採樣、調優助手、計數器監視器和調用曲線圖四大模塊,下面將針對Windows操作系統環境Intel VTune安裝目錄下的範例程序VTuneDemo.exe(例如:C:/Program Files/Intel/VTune/Examples/ VTuneDemo.exe)爲具體的實例,講解這幾個主要功能模塊的使用方法。

1、採樣(Sampling

Sampling通過統計的方法來找到HotspotsSampling收集器週期性的中斷處理器以獲取可執行的程序信息,採樣主要有兩種方式:

① 基於時間的採樣(TBS),即由操作系統定時服務和每n個處理器時鐘點觸發分析器按照週期性的時間間隔收集信息,例如操作系統定時器、NN>1)個處理器時鐘等;

②基於事件的採樣(EBS),即分析器按照特定處理器事件的觸發收集信息,檢測程序執行中處理器的內部事件(Performance Monitor Unit:PMU)發生次數(及樣本),例如:L2級緩存遺失、分支誤預測、浮點指令過時(retired)等等事件所觸發。

下面我們介紹如何使用VTune對應用程序進行採樣(Sampling)分析。

1)啓動Intel VTune性能分析器,運行界面如圖7.2.1所示。

7.2.1 VTune性能分析器啓動界面

2)選擇“New Project”按鈕,建立新的工程,執行界面如圖7.2.2 所示。

7.2.2 VTune性能分析器功能選擇界面

3)選擇“Sampling Wizard”按鈕,選擇採樣嚮導後,出現如圖7.2.3所示採樣嚮導界面。

7.2.3 採樣嚮導界面

4)選擇文件類型,在我們的系統環境下選擇第一項“Window/Window CE/Linux Profiling”,出現如圖7.2.4所示界面。

 

5)在“Application To Launch”欄中指定要分析的應用程序文件“VTuneDemo.exe”(如以C:/Program Files/Intel/VTune/Examples/VTuneDemo.exe爲例),“Command line arguments”欄中設置應用程序的運行參數,這裏程序“VTuneDemo.exe”沒有運行參數,故該項設置爲空,點擊“Finish”按鈕開始進行基於事件(系統默認)的採樣分析,待採樣完成後,可以看到VTune分析器對當前系統中所有進程的採樣分析的結果和性能指標的排序視圖。如圖7.2.5所示,此時,“Process”進程採樣功能按鈕處於激活態(圖7.2.5中紅色圈所標示),視圖區中以橫向柱形圖方式顯示當前系統中所有進程(Process)按“Instructions Retired”事件發生多少進行升序排序後的結果,當前觸發事件還包括:ClocktickCPI性能,其中,紅色三角符號所標示的爲當前選定要分析的進程。

如圖7.2.5所示,對各進程按其它事件排序或重排序,可點擊視圖區下面的視圖說明區中對應的事件前面的“sort”表格,此時,會在該事件前面出現綠色方向箭頭進行標示;要在VTune視圖區中以表格形式顯示採樣數據信息,可在視圖區中單擊鼠標右鍵,依次選擇:View As -> Table;重新進行採樣,可直接點擊“Sampling”快捷鍵圖標“  ”。

 

 

7.2.5 分析當前CPU中各進程執行情況

圖中,CPU_CLK_UNHALTED.CORE - 表示處理器非停機狀態花費的機器週期數;INST_RETIRED.ANY - 表示退出的指令數,即指令的有效執行的計數;一般來說,CPI = CPU_CLK_UNHALTED.CORE / INST_RETIRE.ANY, 表示一段代碼(函數,模塊)平均每條指令花費的機器週期,其值是愈小愈好,那些CPI值大,亦CPU_CLK_UNHALTED.CORE值也大的函數,即通常所說的熱點函數。

6)雙擊需要進行進一步分析的進程,或者單擊選擇需要進行進一步分析的進程,並點擊VTune 分析器中的“Thread”按鈕,“Thread”按鈕處於激活態(圖7.2.6中紅色圈所標示),進入到線程分析狀態,從視圖區可以看到步驟(5)中選定的進程中各個線程的運行情況,如圖7.2.6所示,在其中可以看到每條線程的ClocktickInstructions ReyiredCPI性能情況。

7.2.6 分析應用程序各線程性能指標

7)在線程分析狀態,雙擊需要進行進一步分析的某個線程,或者單擊選擇需要進行進一步分析的該線程,並點擊VTune 分析器中的“Module”按鈕,“Module”按鈕處於激活態(圖7.2.7中紅色圈所標示),進入到模塊分析狀態,從視圖區可以看到步驟(6)中選定的線程中各個系統模塊的運行情況,如圖7.2.7所示,在其中可以看到各模塊的ClocktickInstructions ReyiredCPI性能情況。

7.2.7 分析當前線程中各模塊執行情況

2、熱點(Hotspot)問題分析及調優助手

針對應用程序的採樣結果(以 C:/Program Files/Intel/VTune/Examples/ VTuneDemo.exe爲例,採樣過程請參考本小節1中的相關內容),運行至模塊分析狀態,在視圖區選擇應用程序模塊“VTuneDemo.exe”,點擊VTune分析器中的“Hotspot”按鈕(圖7.2.8中紅色圈所標示),VTune分析器將程序分割成若干部分進行熱點分析,並顯示分析結果,如圖7.2.8 所示,從分析出的具體函數的ClocktickInstructions Reyired CPI,從中可以找到該應用程序的熱點。

此時,“Source”按鈕變亮(圖7.2.8中綠色圈所標示,只有在Hotspot狀態下“Source”按鈕纔可操作),點擊“Source”按鈕可以對程序的具體源代碼進行分析,分析結果如圖7.2.9所示,根據VTune提示出的Hotspot部分的源代碼,我們可以考慮對這部分代碼進行改進,以此來提高應用程序的性能。

7.2.8 對應用程序進行熱點分析

7.2.9 熱點問題的源代碼級分析

如果需要VTune提供關於優化的建議或解決參考方案,可以點擊圖中右上角圖標按鈕 (圖7.2.10中紅色圈所標示),彈出調優助手設置窗口,如圖7.2.10所示。

7.2.10 調優助手設置窗口

點選“OK”按鈕,我們在系統默認設置下通過VTune調優助手對程序進行性能分析得到結果,其中在VTune的界面右側,可以看到“Intel Tuning Assistant”窗口對具體的代碼提出了優化意見。如圖7.2.11所示。

7.2.11 使用調優助手分析結果

3、計數器監視器的使用

根據佔處理器時間找Hotspot的方式

1)啓動Intel VTune性能分析器,選擇“New Project”按鈕,建立新的工程,然後選擇“Counter Monitor Wizard”選項(圖7.2.12中紅色圈所標示),選擇計數器監視器嚮導,如圖7.2.12 所示,選擇“OK”按鈕。

7.2.12 計數器監視器(Counter Monitor)選項界面

2)在“Application To Launch”對話框中選擇要分析的應用程序文件(如以C:/Program Files/Intel/VTune/Examples/VTuneDemo.exe爲例),如圖7.2.13 所,選擇“Finish”按鈕。

7.2.13 選擇待分析應用程序

3)計數器監視器則開始對指定的應用程序實時監視,結果如圖7.2.14 所示。

7.2.14 使用計數器監視器監視程序運行狀態

其中,計數監控器名稱分別爲:

轉發器(Redirector):   每秒網絡錯誤(NetWork Errors/sec);

內存(Memory)          可執行字節(Available Bytes)

系統(System)          處理器隊列長度(Processor Queue Length )

系統(System)          每秒上下文切換次數(Context Switches/Sec)

處理器(Processor(_Total)):特權時間百分比(% Privileged Time)

處理器(Processor(_Total)):處理時間百分比(% Processor Time)

4)若需要對監視圖中性能折線進行平滑處理,可單擊圖標工具按鈕 (圖7.2.15中紅色圈所標示)來實現,如圖7.2.15所示。

7.2.15 計數監控器中顯示平滑性能曲線

4、調用曲線圖

調用曲線圖採用尋跡的方式標示程序代碼在運行時刻的函數進入點和退出點,並根據總時間找到關鍵路徑、決定程序流向和調用結果。

1)啓動Intel VTune性能分析器,選擇“New Project”按鈕,建立新的工程,然後選擇“Call Graph Wizard”選項,選擇調用曲線圖嚮導,點選“OK”按鈕,如圖7.2.16 所示

7.2.16 調用曲線圖(Call Graph)選項界面

2)再選擇“Window/Window CE/Linux Profiling”文件類型,選擇要進行分析的應用程序文件( 如以C:/Program Files(x86)/Intel/VTune/Examples/VTuneDemo.exe爲例),就可以得到如圖7.2.17 所示的應用程序內部函數調用關係圖,在其中顯示了函數彼此之間的調用關係以及關鍵路徑,其中,關鍵路徑用紅色連線進行了標註。

7.2.17 使用調用曲線圖(Call Graph)查找關鍵路徑

7.2.3 利用VTune性能分析器優化分析應用程序性能

下面通過一個典型的應用實例實驗:使用VTune性能分析器採用基於時鐘事件採樣方式對用於壓縮文件處理的應用程序gzip.exe進行取樣收集和分析,來指引讀者掌握使用VTune性能分析器分析應用程序的性能指標,從而找到提高應用程序性能的基本方法。

1、尋找熱點區域

實驗例程路徑:/code/VTuneBasics/

要求讀者自己分析該程序中最耗時的函數,即熱點區域,具體操作步驟如下:

1、關閉病毒掃描和監控程序;

2、運行Intel VTune Performance Analyzer,並新建工程項目;

3、啓動Sampling嚮導,選擇Windows*/Windows* CE/Linux Profile文件;

4不選擇Automatically generate tuning advice選項,然後選下一步;

5、選擇gzip.exe程序的完整路徑(/code/VTuneBasics/gzip/Release/);

6、在Command Line Arguments對話框中輸入:-f testfile.dat,用於指定待壓縮文件,其中,testfile.dat表示待壓縮文件,該文件與gzip.exe應用程序處於同一目錄下,讀者可根據具體情況指定相應的待壓縮文件;

7、使用VTune採樣(Sampling)並分析採樣結果;

        

重複以上步驟,多進行幾次採樣過程,然後根據結果及源程序代碼分析以下問題:

         gzip.exe中那個函數消耗了最多的CPU運行時間?

         gzip.exe中那個函數的CPICycle Process Instruction)最高?

         gzip.exe源代碼中哪一行時鐘週期顯示最多?

         gzip.exe是多線程程序嗎?

2、採樣(Sampling)

實驗例程路徑:/code/VTuneBasics/

1、運行Intel VTune Performance Analyzer,並新建工程項目;

2、啓動Sampling嚮導,選擇Windows*/Windows* CE/Linux Profile文件;

3不選擇Automatically generate tuning advice選項,然後選下一步;

4選擇matrix.exe程序的完整路徑(/code/VTuneBasics/gzip/Release/);

5、在Command Line Arguments對話框中輸入:-f testfile.dat,用於存儲採樣過程信息;

6、單擊Finish按鈕,使用Vtune採樣(Sampling)並分析程序matrix.exe

7、分析完畢,單擊Process按鈕;並按Ctrl+A組合鍵選擇所有進程;

     說明以下各按鈕的功能和作用:

3、調用圖(Call Graph

實驗例程路徑:/code/VTuneBasics/

1、創建一個新的活動,單擊Activity->New Activity選項;

2、雙擊Call Graph Wizard選項;

3、選擇Windows*/Windows* CE/Linux Profile文件

4選擇gzip.exe程序的完整路徑(/code/VTuneBasics/matrix/release);

5、在Command Line Arguments對話框中輸入:-f testfile.dat,用於存儲採樣過程信息;

6、單擊Finish按鈕,使用Vtune採樣(Sampling)並按調用圖方式顯示並分析程序gzip.exe

根據實驗結果分析以下問題:

      按照調用圖上的顯示,程序中那個函數消耗的時間最多,它被那些函數調用過?

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章