How to Use Remote Collection on Intel® VTune™ Amplifier for Systems

Background

Intel® System Studio is the name for the Intel’s new embedded software tool suite. This tool suite includes Intel® VTune Amplifier for Systems. This article will explain the steps you need to follow to run the new remote power collectors in VTune Amplifier for Systems on an embedded platform.

Overview

The embedded OS we will be focused on is Yocto Project* version 1.2. This platform supports many Intel BSP’s and it also allows you to work without running any physical embedded hardware by letting you develop via an emulator that they provide.  Here are the steps we will take to run our collection:

  1. Setting up a Yocto Project* 1.2 environment.
    1. Setting up your Linux host
    2. Setting up a cross compilation environment
    3. Setup a full build of Yocto Project* for your BSP
    4. Building a Yocto Project* kernel
  2. Install VTune Amplifier 2013 for Systems
    1. Cross build the sampling drivers (sep, vtss)
    2. Load drivers onto your device.
  3. Setup target to not require password.  (necessary for the remote collection script)
  4. Run a remote collection using amplxe-runss.py
  5. On your Linux host view the results in the Intel® VTune™ Amplifier 2013 for Systems GUI

Note: steps  1,2 and 3 are one time steps. Once you have the sampling driver built and loaded on your system you should be enabled to collect performance data.

Setting up a Yocto 1.2 environment

  1. Download the pre-built toolchain, which includes the runqemu script and support files
    download from: http://downloads.yoctoproject.org/releases/yocto/yocto-1.2/toolchain/
    1. The following tool chain tarball is for a 32-bit development host system and a 32-bit target architecture: poky-eglibc-i686-i586-toolchain-gmae-1.2.tar.bz2
    2. You need to install this tar ball on your Linux host in the root “/” directory. This will create an installation area “/opt/poky/1.2”
  2. Setup your Linux host system
    1. For my Ubuntu x64 12.04 system I ran the following command to setup my system.

      $ sudo apt-get install sed wget cvs subversion git-core coreutils \

           unzip texi2html texinfo libsdl1.2-dev docbook-utils gawk \

           python-pysqlite2 diffstat help2man make gcc build-essential \

      g++ desktop-file-utils chrpath libgl1-mesa-dev libglu1-mesa-dev \

       mercurial autoconf automake groff

    2. See the Yocto getting started guide for more information on the setup required for various Linux distros: http://www.yoctoproject.org/docs/1.0/yocto-quick-start/yocto-project-qs.html
  3. Build Yocto
  4. Download the latest stable Yocto build system.
    1. tar xjf poky-denzil-7.0.1.tar.bz2
    2. source poky-denzil-7.0.1/oe-init-build-env poky-denzil-7.0.1-build
    3. Edit poky-denzil-7.0.1-build/vonf/local.conf
      1. Tailor MACHINE to the bsp you want to build.
    4. Edit poky-denzil-7.0.1-build/conf/bblayers.conf
      1. Specify the meta-intel you checkeout
    5.  Build Yocto
      1. butbake core-image-sato
      2. This will create a kernel that is sufficient to build sep and vtss

Install Intel® VTune™ Amplifier for Systems

  1. Install Intel® VTune™ Amplfier for Systems on your Linux host. 
  2. You will need to build the sampling driver and load it on your target in order to collect performance data.
    1. cd $VTUNE_INSTALL/sepdk
    2.   For example, if you are building a Yocto 1.2 build of the fri2-noemgd board support package then your build command would be similar to the following:

./build-driver -ni --c-compiler=i586-poky-linux-gcc \

                   --kernel-src-dir=~/yocto/poky-denzil-7.0/build/tmp/work/fri2_noemgd-poky-linux/linuxyocto3.2.11+git1+5b4c9dc78b5ae607173cc3ddab9bce1b5f78129b_1+76dc683eccc4680729a76b9d2fd425ba540a483-r1/linux-fri2-noemgd-standard-build \

                   --kernel-version=3.2.18-yocto-standard \

                   --make-args="PLATFORM=x32 ARITY=smp" \

                   --install-dir=../prebuilt

  1. Load the sampling driver on your target.
    1. scp -r $VTUNE_INSTALL/sepdk root@target_io:/home/root
    2. Login to your target
    3. cd /home/root/sep/sepdk
    4. ./insmod-sep3 -re
    5. You may need to install the vtsspp collector separately. On some Yocto platforms the shell does not provide the capabilities to load the drivers via a script.
      1. cd /home/root/sep/sepdk/vtsspp
      2. insmod vtsspp.ko
    6. Verify the sep and vtsspp drivers loaded.
      1. lsmod | grep sep
      2. lsmod | grep vtsspp
  2. Install the remote collection binaries on the target
    1. Copy the contents of $VTUNE_INSTALL/target/linux32 (or linux64 depending on your target).
      1. scp -r linux32 root@target_ip:/home/root

Setup target to not require a password

  1. Make sure your root directory has a .ssh directory and only the owner had read/write/execute access on it.
  2. cat ~/.ssh/id_dsa.pub | ssh root@ip_target “ cat >> /home/root/.ssh/authorized_keys”
  3. On the target chmod 600 /home/root/.ssh/authorized_keys
  4. Verify you can now login without password
    1. ssh root@target_ip

Run the Intel® Vtune™ Amplifier for Systems remote collector on your application

  1. Set up some target environment variables
    1. export AMPLXE_TARGET_PRODUCT_DIR=/home/root/linux32
      1.  From the location you copied the remote collection binaries
    2. export AMPLXE_TARGET_TMP_DIR=/tmp
  2. Run collection
  3. amplxe-runss.py --target=user@target -r result@@@ --duration 10 --no-pmu-stack --event-config CPU_CLK_UNHALTED.CORE:,CPU_CLK_UNHALTED.REF

On your Linux host: View the Vtune™ Amplifier 2013 for Systems results

1.       amplxe-gui  r000

Nähere Informationen zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.