C++性能測試工具——Vtune的使用

一、Intel Vtune的安裝

在前面初步認識了一下幾個性能的測試工具,本篇重點介紹一下Intel VTune Profiler,VTune是一個強大的性能分析工具,它屬于Intel oneAPI工具包中工具的一種。VTune的安裝只介紹在Linux平臺下的場景(Windows安裝相對簡單)。
1、兩種安裝方法
第一種方法:
打開網址https://www.intel.com/content/www/us/en/developer/tools/oneapi/toolkits.html#base-kit。找到合適的版本安裝,不過這個安裝是一個全版本的安裝,可能會安裝很多其它工具。
第二種方法:
使用命令安裝:

sudo yum install intel-oneapi-vtune  # CentOS
sudo apt install intel-oneapi-vtune  # Ubuntu/Debian
或使用離線安裝包:
wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/6bfca885-4156-491e-849b-1cd7da9cc760/intel-oneapi-base-toolkit-2025.1.1.36_offline.sh
sudo sh ./intel-oneapi-base-toolkit-2025.1.1.36_offline.sh -a --silent --cli --eula accept

2、配置
主要是設置環境變量和權限

//配置環境變量
source /opt/intel/oneapi/vtune/latest/env/vars.sh  # oneAPI 版本
source /opt/intel/vtune_amplifier/amplxe-vars.sh    # 老版本
//設置用戶權限
sudo usermod -aG vtune $USER

3、驗證
可以運行相關腳本:

bash /opt/intel/oneapi/vtune/latest/bin64/vtune-self-checker.sh

二、主要功能

VTune有三種使用方式,一個是使用GUI的方式,另外一種是命令方式,還有一種是遠程應用的方式。
1、使用GUI方式
使用下面的命令啟動:

vtune-gui  

然后就可以使用UI進行處理相關的測試。首先創建一個新的測試項目,選擇相應的類型;其次配置測試程序的路徑或進程ID;最后啟動分析并查看結果,如對火焰圖或調用棧等進行分析。
如下圖:
在這里插入圖片描述

2、命令方式
執行下面命令:

vtune -collect hotspots -r ./result_dir -- ./your_application    #運行
amplxe-cl -report hotspots -r ./result_dir -format text -report-output ./report.txt #生成報告  

hotspots為分析的類型(其它還有locksandwaits等),生成的報告支持txt,csv及html。
3、遠程應用方式
遠程方式也比較簡單,它也分成有無界面的操作方式,其實這個和VTune本身沒有什么太大關系。可以使用遠程桌面的一些工具(如向日葵,VNC Server等)或在一些開發IDE上使用插件(如VSCODE的oneAPI插件)。這里就不再展開分析說明。

三、例程應用

下面看一個例程分析,對OneAPI自帶的矩陣測試程序進行:

vtune -collect hotspots -r ~/result -- ./matrix
vtune: Warning: Microarchitecture performance insights will not be available. Make sure the sampling driver is installed and enabled on your system.
vtune: Collection started. To stop the collection, either press CTRL-C or enter from another console window: vtune -r /home/fpc/result -command stop.
Addr of buf1 = 0x7f339f7b5010
Offs of buf1 = 0x7f339f7b5180
Addr of buf2 = 0x7f339d7b4010
Offs of buf2 = 0x7f339d7b41c0
Addr of buf3 = 0x7f339b7b3010
Offs of buf3 = 0x7f339b7b3100
Addr of buf4 = 0x7f33997b2010
Offs of buf4 = 0x7f33997b2140
Threads #: 16 Pthreads
Matrix size: 2048
Using multiply kernel: multiply1
Execution time = 3.516 seconds
vtune: Collection stopped.
vtune: Using result path `/home/fpc/result'
vtune: Executing actions 20 % Resolving information for `libtpsstool.so'       
vtune: Warning: Cannot locate debugging information for file `/opt/intel/oneapi/vtune/2024.0/lib64/libtpsstool.so'.
vtune: Executing actions 75 % Generating a report                              Elapsed Time: 3.535sCPU Time: 46.929sEffective Time: 46.929sSpin Time: 0sOverhead Time: 0sTotal Thread Count: 17Paused Time: 0sTop Hotspots
Function   Module     CPU Time  % of CPU Time(%)
---------  ---------  --------  ----------------
multiply1  matrix      46.909s            100.0%
init_arr   matrix       0.010s              0.0%
__GI_      libc.so.6    0.010s              0.0%
Collection and Platform InfoApplication Command Line: ./matrixOperating System: 5.19.0-50-generic DISTRIB_ID=Kylin DISTRIB_RELEASE=V10 DISTRIB_CODENAME=kylin DISTRIB_DESCRIPTION="Kylin V10 SP1" DISTRIB_KYLIN_RELEASE=V10 DISTRIB_VERSION_TYPE=enterprise DISTRIB_VERSION_MODE=normalComputer Name: fjfResult Size: 4.5 MBCollection start time: 10:55:09 12/05/2025 UTCCollection stop time: 10:55:13 12/05/2025 UTCCollector Type: User-mode sampling and tracingCPUName: Intel(R) microarchitecture code named Alderlake-SFrequency: 2.112 GHzLogical CPU Count: 20Cache Allocation TechnologyLevel 2 capability: not detectedLevel 3 capability: not detectedIf you want to skip descriptions of detected performance issues in the report,
enter: vtune -report summary -report-knob show-issues=false -r <my_result_dir>.
Alternatively, you may view the report in the csv format: vtune -report
<report_name> -format=csv.
vtune: Executing actions 100 % done                                

同時,會在指定的目錄下,生成一個文件夾,內部有不少的供分析的相關文件,此處為/home/user/result
如果在執行命令時出現:

vtune: Error: Cannot start data collection because the scope of ptrace system call is limited. To enable profiling, please set /proc/sys/kernel/yama/ptrace_scope to 0. To make this change permanent, set kernel.yama.ptrace_scope to 0 in /etc/sysctl.d/10-ptrace.conf and reboot the machine.
vtune: Warning: Microarchitecture performance insights will not be available. Make sure the sampling driver is installed and enabled on your system

可執行命令:

echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
或
sudo sysctl -w kernel.yama.ptrace_scope=0

四、總結

會熟練的使用各種測試工具,是對程序進行優化的前提。特別是在一些性能需求相當關鍵的場景下,不借助工具會導致性能優化的效率急劇降低。磨刀不誤砍柴工,與諸君共勉!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81611.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81611.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81611.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

互聯網大廠Java求職面試:優惠券服務架構設計與AI增強實踐-6

互聯網大廠Java求職面試&#xff1a;優惠券服務架構設計與AI增強實踐-6 場景設定&#xff1a;技術總監張總坐在會議室里&#xff0c;鄭薪苦帶著自信的微笑走了進來。今天他們要圍繞優惠券服務的架構設計及如何結合AI進行增強展開討論。 第一輪面試&#xff1a;基礎架構設計 …

nginx模塊使用、過濾器模塊以及handler模塊

一、如何使用nginx的模塊 1.ngx_code.c: #include "ngx_config.h" #include "ngx_conf_file.h" #include "nginx.h" #include "ngx_core.h" #include "ngx_string.h" #include "ngx_palloc.h" #include "n…

【Odoo】Pycharm導入運行Odoo15

【Odoo】Pycharm導入運行Odoo15 前置準備1. Odoo-15項目下載解壓2. PsrtgreSQL數據庫 項目導入運行1. 項目導入2. 設置項目內虛擬環境3. 下載項目中依賴4. 修改配置文件odoo.conf 運行Pycharm快捷運行 前置準備 1. Odoo-15項目下載解壓 將下載好的項目解壓到開發目錄下 2. …

網絡安全-等級保護(等保) 2-5 GB/T 25070—2019《信息安全技術 網絡安全等級保護安全設計技術要求》-2019-05-10發布【現行】

################################################################################ GB/T 22239-2019 《信息安全技術 網絡安全等級保護基礎要求》包含安全物理環境、安全通信網絡、安全區域邊界、安全計算環境、安全管理中心、安全管理制度、安全管理機構、安全管理人員、安…

【SpringBoot】??整合飛書群機器人發送消息

&#x1f4a5;&#x1f4a5;????歡迎閱讀本文章????&#x1f4a5;&#x1f4a5; &#x1f3c6;本篇文章閱讀大約耗時3分鐘。 ??motto&#xff1a;不積跬步、無以千里 &#x1f4cb;&#x1f4cb;&#x1f4cb;本文目錄如下&#xff1a;&#x1f381;&#x1f381;&am…

我的多條件查詢

背景&#xff1a;2個表&#xff0c;是一對多的關系&#xff0c;一個實時視頻幀可以出現多個檢測結果 要求&#xff0c;可以根據&#xff0c;ids&#xff0c;起始時間&#xff0c;識別出的鳥的種類&#xff0c;來進行刪除。 出現的問題&#xff0c; 一致性沒有實現&#xff1a…

關于網站提交搜索引擎

發布于Eucalyptus-blog 一、前言 將網站提交給搜索引擎是為了讓搜索引擎更早地了解、索引和顯示您的網站內容。以下是一些提交網站給搜索引擎的理由&#xff1a; 提高可見性&#xff1a;通過將您的網站提交給搜索引擎&#xff0c;可以提高您的網站在搜索結果中出現的機會。當用…

【Oracle專欄】擴容導致數據文件 dbf 丟失,實操

Oracle相關文檔,希望互相學習,共同進步 風123456789~-CSDN博客 1.背景 同事檢查擴容情況,發現客戶擴容后數據盤后,盤中原有文件丟失,再檢查發現數據庫沒有啟動。通過檢查發現數據盤中丟失的是oracle的 dbf 表空間文件。數據庫無法啟動。 檢查情況:1)沒有rman備份 …

負載均衡—會話保持技術詳解

一、會話保持的定義 會話保持&#xff08;Session Persistence&#xff09;是一種負載均衡策略&#xff0c;其核心機制是確保來自同一客戶端的連續請求&#xff0c;在特定周期內被定向到同一臺后端服務器進行處理。這種機制通過記錄和識別客戶端的特定標識信息&#xff0c;打破…

CSRF攻擊 + 觀測iframe加載時間利用時間響應差異側信道攻擊 -- reelfreaks DefCamp 2024

參考: https://0x90r00t.com/2024/09/30/3708/ 題目信息 有些事情最好還是保持低調。當然&#xff0c;除非你是個真正的怪胎。 注意&#xff1a;該網站通過HTTPS提供服務 標志格式&#xff1a;DCTF&#xff5b;&#xff5d;題目實現了一個類似視頻網站的東西 在其提供的數據庫中…

JS逆向-某易云音樂下載器

文章目錄 介紹下載鏈接Robots文件搜索功能JS逆向**函數a&#xff1a;生成隨機字符串****函數b&#xff1a;AES-CBC加密****函數c&#xff1a;RSA公鑰加密** 歌曲下載總結 介紹 在某易云音樂中&#xff0c;很多歌曲聽是免費的&#xff0c;但下載需要VIP&#xff0c;此程序旨在“…

黑馬k8s(十)

1.Pod生命周期-鉤子函數 2.Pod生命周期-容器探測 因為沒有hello.txt文件 查看詳情&#xff1a; 修改為查看命令&#xff1a; 查看一下詳情&#xff1a; 因為只有一個80端口&#xff0c;沒有8080&#xff0c;所以會重啟 查看詳情&#xff1a; 修改成80&#xff1a; 因為沒有…

每日算法刷題Day9 5.17:leetcode定長滑動窗口3道題,用時1h

9. 1652.拆炸彈(簡單&#xff0c;學習) 1652. 拆炸彈 - 力扣&#xff08;LeetCode&#xff09; 思想 為了獲得正確的密碼&#xff0c;你需要替換掉每一個數字。所有數字會 同時 被替換。 如果 k > 0 &#xff0c;將第 i 個數字用 接下來 k 個數字之和替換。如果 k < 0…

Java IO及Netty框架學習小結

Netty netty官網: Netty 什么是Netty&#xff1f; Netty 是 一個異步事件驅動的網絡應用程序框架&#xff0c;用于快速開發可維護的高性能協議服務器和客戶端。Netty 是一個 NIO 客戶端服務器框架&#xff0c;可以快速輕松地開發網絡應用程序&#xff08;例如協議服務器和客…

計算機網絡筆記(二十七)——4.9多協議標簽交換MPLS

4.9.1MPLS的工作原理 一、MPLS基本工作原理 MPLS&#xff08;Multiprotocol Label Switching&#xff09;是一種介于數據鏈路層和網絡層之間的轉發技術&#xff0c;通過固定長度的標簽進行高速數據轉發。其核心特點是通過預建立的標簽交換路徑&#xff08;Label Switching Pa…

AI 賦能 Copula 建模:大語言模型驅動的相關性分析革新

技術點目錄 R及Python語言及相關性研究初步二元Copula理論與實踐&#xff08;一&#xff09;二元Copula理論與實踐&#xff08;二&#xff09;【R語言為主】Copula函數的統計檢驗與選擇【R語言為主】高維數據與Vine Copula 【R語言】正則Vine Copula&#xff08;一&#xff09;…

【洛谷P3386】二分圖最大匹配之Kuhn算法/匈牙利算法:直觀理解

題目&#xff1a;洛谷P3386 【模板】二分圖最大匹配 &#x1f955; 匈牙利算法本來是針對帶權圖最大匹配的&#xff0c;這里由于題目只是求最大匹配的邊數&#xff0c;所以我們也只考慮無權的情況。 &#x1f680; 本文旨在服務于看了別的關于匈牙利算法的文章但不甚理解的童…

【數據結構】二分查找(返回插入點)5.14

二分查找基礎版 package 二分查找; public class BinarySearch { public static void main(String[] args) { // TODO Auto-generated method stub } public static int binarySearchBasic(int[] a,int target) { int i0,ja.length-1; //設置指針初值 while…

Ubuntu 命令

Ubuntu 命令速查表? ?分類??命令??功能描述??示例/常用選項????文件與目錄?ls列出目錄內容ls -a&#xff08;顯示隱藏文件&#xff09;; ls -lh&#xff08;詳細列表易讀大小&#xff09; cd切換目錄cd ~&#xff08;主目錄&#xff09;; cd ..&#xff08;上級…

Java集合框架詳解與使用場景示例

Java集合框架是Java標準庫中一組用于存儲和操作數據的接口和類。它提供了多種數據結構&#xff0c;每種數據結構都有其特定的用途和性能特點。在本文中&#xff0c;我們將詳細介紹Java集合框架的主要組成部分&#xff1a;List、Set和Queue&#xff0c;并通過代碼示例展示它們的…