1. VTune介紹
VTune可視化性能分析器(Intel VTune Performance Analyzer)是一個用於分析和優化程序性能的工具,作爲Intel爲開發者提供的專門針對尋找軟硬件性能瓶頸的一款分析工具,它能確定程序的熱點(hotspot),找到導致性能不理想的原因,從而讓開發者據此對程序進行優化。
VTune性能分析器能通過以下的手段發現和定位程序中的性能問題
- 從當前系統中收集性能數據;
- 從系統到源代碼不同的層次上,以不同的互動形式來組織和展示數據;
- 發現潛在的性能問題,並提出改進措施。
2. VTune的使用
I. 新建工程
- 啓動VTune性能分析器,如圖所示,點擊新建工程按鈕,新建一個性能分析工程
II. 選擇要分析的目標文件
- 如圖所示,選擇要分析的目標文件,並填寫分析的文件的執行參數
III. 新建分析類型
- 如圖所示,選中目標工程,右擊,可以新建目標文件的分析類型
3. 分析性能類型的介紹
- 如圖所示,英特爾VTune性能分析器,可以分析的性能類型有:”Algorithm Analysis“、”Microarchitecture Analysis“、”Knights Corner Platform Analysis“和”Custom Analysis“四大類。
① Algorithm Analysis(算法分析)
- 如圖所示,”Algorithm Analysis(算法分析)“是運用最廣泛的分析類型。它包含”Basic Hotspots(基礎熱點)“、”Advanced Hotspots(高級熱點)“、“Concurrency(併發)“和”Locks and Waits(資源鎖和等待)“四種子分析類型。下面詳細介紹”Basic Hotspots(基礎熱點)“的使用。
a.(Basic Hotspots)基礎性能熱點分析
選擇要分析的目標程序,選擇算法分析裏的基礎性能熱點分析。設置CPU的採樣間隔時間,點擊右上角的“Start”按鈕開始分析目標程序。
點擊開始分析數據後,VTune就開始運行目標程序,並收集相關的性能數據,當收集完成之後,需要手動停止數據的收集。
8類數據
停止數據分析後,可以獲得8類數據,分別爲”Analysis Target“、”Analysis Type“、”Collection Log“、”Summary“、”Bottom-up“、”Caller/Callee“、”Top-down Tree“和”Tasks and Frames“。其中”Analysis Target“、”Analysis Type“和”Collection Log“三類數據,不做過多分析。主要分析其他幾類數據所包含的內容。
Summary
Summary主要分析的數據有:”Elapsed Time(經過的總時間)“、”Top Hotspots(高熱點部分)“、“CPU Usage Histogram(CPU使用直方圖)“和”Collection and Platform Info(收集信息和平臺信息)
Elapsed Time信息,主要有總線程數量、開銷時間(花費在同步和線程庫函數的時間)、自旋時間(CPU等待其它同步資源處理的自旋等待時間)、CPU時間(CPU運行程序所花費的總時間)和暫停時間。
Top Hotspots信息,會列舉VTune分析的程序裏的活躍度最高(最耗時)的部分,例如:自旋鎖、函數等。
CPU Usage Histogram信息,顯示CPU使用直方圖。
Collection and Platform Info信息,包含了應用程序命令行、操作系統、CPU等信息。
Bottom-up
Bottom-up可以查看函數/模塊/線程調用時間的耗費,主要分析的數據有:進程、線程、模塊、函數和調用的堆棧信息。可以顯示程序的進程、線程號,函數的開始地址,CPU開銷時間,CPU自旋時間等信息。
Caller/Callee
Caller/Callee主要分析的數據有:CPU總利用時間、各個函數自我利用時間、各個函數的自我開銷時間、各個函數的調用者和被調用者等
Top-down Tree
Top-down Tree是以樹形結構展示每個調用所花費的時間及佔比,可以從時間花費最多的地方往下一層一層的展開,找到關鍵函數分析其性能。其分析的內容和Caller/Callee基本相同。
Platform
Platform主要以直方圖的形式詳細展示了程序的分析時間、CPU使用時間以及進程和各個線程的運行時間。
4. 總結
VTune可以幫助用戶定位程序中的”熱點”,所謂的”熱點”就是程序中花費執行時間最長的代碼段。VTune性能分析器能夠收集應用程序和系統上的性能數據,然後以圖形和表格的形式顯示出來。從這些顯示的數據中,用戶能夠分析應用程序的性能,從而知道程序中哪個部分執行的慢,爲什麼執行的慢。