Tutorial for Intel® VTune™ Amplifier Profiling for Docker* Container

ID 759593
Updated 11/17/2017
Version Latest



Author : Kiselev, Sergey (Intel) 

Intel® System Studio – Intel® VTune™ Amplifier

Profiling C++ Application in Docker* Container


Intel® VTune™ Amplifier 2018 included with Intel® System Studio 2018 adds the container targets profiling feature. This feature allows profiling native or Java* applications running in an LXC*, Docker*, or Mesos* container on a Linux* system. This article gives an example of setting up a C++ application in a Docker* container, and profiling it using Intel® VTune™ Amplifier 2018.



The following hardware and software components are required for the profiling applications in the container environment:

  • Host system with supported OS: Windows* or Linux*
  • Intel® System Studio 2018 installed on the host system
  • Target system with supported OS – Ubuntu* Linux*
  • Docker* container platform installed on the target system
  • Network connection between the host and the target system

It is possible to use the same system as both the host and the target, and run the Docker* containers and Intel® VTune™ Amplifier on that system.

The target system needs to have an SSH server installed. The password-less SSH login is required for Intel® VTune™ Amplifier in order to connect to the remote system. Please refer to Configuring SSH Access for Remote Collection section of Intel® VTune™ Amplifier 2018 Help for the password-less SSH  login setup instructions.

The target Linux* system needs to have Sampling Drivers installed in order to run Advanced Hotspot analysis. Please refer to Building and Installing the Sampling Drivers for Linux* Targetsdocument.

Installing and Configuring Docker* Container

Installing Docker*

On your target system, open a terminal, and run the following commands to install Docker*:

$ sudo apt update
$ sudo apt install docker.io


Creating and Running Ubuntu* Linux Based Docker* Container

Run the following commands to create an Ubuntu* Linux based Docker* image:

$ mkdir vtune-sample
$ cd vtune-sample
$ echo FROM ubuntu:latest > Dockerfile
$ docker build -t vtune-sample .

Make sure that vtune-sample image has been created:

$ docker images
REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE
vtune-sample                      latest              20c44cd7596f        2 weeks ago         123MB

Run the container and keep it running using the -t and -d options:

$ docker run -td vtune-sample


Installing Build Tools in the Container

Check the container ID:

$ docker ps
CONTAINER ID        IMAGE                                      COMMAND             CREATED             STATUS              PORTS               NAMES
532c7d19c91b        vtune-sample                               "/bin/bash"         8 seconds ago       Up 6 seconds                            nostalgic_lamport

Use the container ID to run bash shell in this container in the interactive mode:

$ docker exec -it 532c7d19c91b /bin/bash

Run the following commands in the container’s bash shell to install build-essential package in the container:

root@532c7d19c91b:/# apt update
root@532c7d19c91b:/# apt install -y build-essential


Deploying matrix_sample to the Container

Run the following command to copy the matrix sample to the container:

$ docker cp <path_to_vtune_samples>/matrix_vtune_amp_xe.tgz 532c7d19c91b:/home

Intel® VTune™ Amplifier 2018 samples are normally located in the following directories:
Linux* host: /opt/intel/system_studio_2018/vtune_amplifier_2018/samples/en/C++/
Windows* host: C:\IntelSWTools\system_studio_2018\Vtune_Amplifier_2018\samples\en\C++\

Run the following commands in the container’s bash shell to extract and build the matrix_sample:

root@532c7d19c91b:/# cd /home/
root@532c7d19c91b:/home# tar xf matrix_vtune_amp_xe.tgz
root@532c7d19c91b:/home# cd matrix/linux
root@532c7d19c91b:/home/matrix/linux# make gcc


Running Advanced Hotspot Analysis

Starting Intel® VTune™ Amplifier on Linux* host

Run the following commands to start the Intel® VTune™ Amplifier GUI:

$ source /opt/intel/system_studio_2018/vtune_amplifier_2018/amplxe-vars.sh
$ amplxe-gui


Starting Intel® VTune™ Amplifier on Windows* host

Click on the Start/Windows button and search for “vtune”. Click on the Intel VTune Amplifier 2017 for Systems icon.


Configuring the Analysis Target and Analysis Type

Create a new project in the Intel® VTune™ Amplifier, and configure it as follows:

  1. Select a target system to profile: Configure it according to your host and target setup. Use remote Linux (SSH) for a remote/separate target, or use local host when using the same system to run Intel® VTune™ Amplifier and Docker* container. The screenshot below shows the local option
  2. Select a target type to profile: Select Attach to Process
  3. Select Process name radio button, and enter matrix.gcc in the process name field. At this point you might see a warning about the process not running on the system.

Start matrx.gcc process in the container’s bash shell:

root@532c7d19c91b:/home/matrix/linux# ./matrix.gcc

If needed click on the Retry button in the Intel® VTune™ Amplifier GUI

Next, click on the Choose Analysis button, and configure the Analysis type as follows:

  1. Select Advanced Hotspots analysis
  2. Select Hotspots and stacks option

Click on the Start button to start the analysis


Analyzing the Collected Data

Once analysis is complete, the Intel® VTune™ Amplifier opens the Summary tab:

Click on the Bottom-up tab to view the detailed information.

For further analysis, double-click the hotspots function to identify the hotspot source code line for the function and analyze metric data collected for this line.

To get statistics on the Docker container modules, group the data by Module / Function / Call Stack and identify the container modules by the docker entry in the module path: