不完全 vtune 應用筆記

vtune 的 host 和 target 機器

以下就以我的環境爲例:

  • 我的 vtune GUI 工具是 安裝在 window 的機器上。這個就是 host 機器。
  • 而我的被測試機器,則是一臺 centos7 的服務器。這個就是 target 機器。

安裝 vtune 驅動 的動機

vtune 可以使用 perf 來採樣,但是在進行微架構分析的時候,perf 採樣會報錯。
這時,則需要 vtune 自帶的驅動來採樣。

安裝 vtune 驅動 前的準備

在安裝 vtune 自帶的驅動 前,需要內核打開以下編譯選項:

  • CONFIG_MODULES=y
  • CONFIG_MODULE_UNLOAD=y
  • CONFIG_PROFILING=y
  • CONFIG_SMP=y
  • CONFIG_TRACEPOINTS=y (optional but recommended)
  • CONFIG_KPROBES=y
  • CONFIG_RING_BUFFER=y
  • CONFIG_FRAME_POINTER=y (optional but recommended for kernel stack analysis)

修改 內核 的 Makefile:
在 CFLAGS_KERNEL 添加 -g 參數

CFLAGS_KERNEL := -g
CFLAGS := -g 

重新編譯內核

export CFLAGS_KERNEL=-g
export CFLAGS=-g 
make -j 16 clean
make -j 16  && make -j 16 modules &&  make -j 16 modules_install && make -j 16 install

修改 /etc/sysctl.conf
解除 kernel addresses 的限制。

kernel.kptr_restrict=0

安裝 vtune 的幫助文件

安裝 vtune 的幫助文件可以參考以下文件。
該文檔 位於 host 機器 vtune 的安裝路徑上 。

參考文檔:

C:\Program Files (x86)\IntelSWTools\documentation_2019\en\VTune Amplifier\amplxe_install_guide_windows.pdf

vtune 驅動 的源碼在哪裏?

vtune 驅動 已經包含在 vtune 的安裝包中。
當將 vtune 安裝到 host 機器後。可以在其中 C:\Program Files (x86)\IntelSWTools\VTune Amplifier 2019\target\linux 找到源碼。

比如 以下的兩個就是 32 和 64 位的 linux 源碼:

  • <install_dir>/target/linux/vtune_amplifier_target_x86.tgz
  • <install_dir>/target/linux/vtune_amplifier_target_x86_64.tgz

將 host 機器上 C:\Program Files (x86)\IntelSWTools\VTune Amplifier 2019\target\linux\vtune_amplifier_target_x86_64.tgz 文件
拷貝 到 target 機器 上的 /tmp 目錄。
解壓 得出 /tmp/vtune_amplifier_2019.6.0.602217
源碼則在 /tmp/vtune_amplifier_2019.6.0.602217/sepdk/src

在 target 機器中。

# 解壓 
tar xzf vtune_amplifier_target_x86_64.tgz

參考章節:

Post-Installation Steps
+-> Set Up Linux* System for Remote Analysis

vtune 驅動 的 編譯 和 安裝

# 編譯 驅動
# 參考章節:
#     Build the Sampling Driver
cd /tmp/vtune_amplifier_2019.6.0.602217/sepdk/src
sh build-driver

# 安裝 驅動
# 參考章節: 
#     Install the Sampling Drivers
cd /tmp/vtune_amplifier_2019.6.0.602217/sepdk/src
sh insmod-sep -r -g root

# 驗證 安裝
# 參考章節: 
#      Check Sampling Driver Installation
cd /tmp/vtune_amplifier_2019.6.0.602217/sepdk/src
sh insmod-sep -q

參考章節:

Sampling Drivers
+-> Build and Install the Sampling Drivers for Linux* Targets

vtune 採樣提早終止

記錄超限,會導致採樣提早終止。工具會出現以下錯誤信息:

The specified data limit of 1000 MB is reached. Data colloection is stop

可以到 target 機器上。查看中間的記錄文件。比如這裏例子的 中間的記錄文件 是放置在 /tmp 目錄。

du -s /tmp/* | sort -n | grep amplxe
>	4	/tmp/amplxe-tmp-root
>	88	/tmp/amplxe-log-root
>	1081624	/tmp/amplxe-results-root
>           ^~~~~ 這個文件已經超過 1000M 了。

amplxe-results-root 中的 記錄,需要找一個合適的分區來存放,以保證有足夠的空間。

在實際的使用中,取 1ms 採樣間隔。會很容易超出 1G 的限制,導致採樣中斷。
這個時候只需要將 CPU sampleing interval, ms 採用間隔設置得大一點就可以了。比如採用間隔 5ms 就足夠了。

我在調試 dpdk 程序的時候:

採樣持續 30秒,由於採樣點過少,很多數據都是 灰色無效的。
採樣持續 60~90秒,情況會比較好。
採樣持續超過 120秒,很多時候結束的時候,會假死。我就從任務管理器,直接殺掉 vtune 再開過。

下載 glibc 的調試信息

在 vtune 採樣後,有的時候會出現 Outside any loop。表示缺少調試信息。

在 centos 下,可以使用以下方法,下載 glibc 的調試信息。

修改文件:

/etc/yum.repos.d/CentOS-Debug.repo

修改內容:

[debug]
name=CentOS-7 - Debuginfo
baseurl=http://debuginfo.centos.org/7/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-7
enabled=1
#       ^~~~ set enabled to 1 from 0. 

下載 glibc 的調試信息。

debuginfo-install glibc

ref:
https://stackoverflow.com/questions/10352546/how-to-install-glibc-with-debugging-info-on-centos-5-5

dpdk 的調試信息

默認情況下dpdk是開了-O3優化的,如果需要有調試信息,要執行 export EXTRA_CFLAGS="-O3 -g3" 再進行編譯。

export EXTRA_CFLAGS="-O3 -g3"

ref:

Tuning Guides and Performance Analysis Papers

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