不完全 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

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