User Guide

Contents

Enable Linux* Kernel Analysis

For successful performance analysis of the kernel and system libraries, do the following:

Enable Kernel Modules Resolution

To provide accurate performance statistics for the Linux kernel, the
VTune
Profiler
requires kernel modules information provided in the
/proc/kallsyms
file. Make sure the
/proc/sys/kernel/kptr_restrict
file contains values that enable reading
/proc/kallsyms
and providing non-zero addresses for the kernel pointers:
  • If the
    kptr_restrict
    value is 0, kernel addresses are provided without limitations (recommended).
  • If the
    kptr_restict
    value is 1, addresses are provided if the current user has a
    CAP_SYSLOG
    capability.
  • If the
    kptr_restrict
    value is 2, the kernel addresses are hidden regardless of privileges the current user has.
See more details at: http://lwn.net/Articles/420403/, http://man7.org/linux/man-pages/man7/capabilities.7.html.
If kernel pointers information was explicitly hidden by setting the
kptr_restrict
to a non-zero value, hardware event-based analysis results may not contain functions from kernel modules. As a result, you may see the CPU time associated with the
[Outside any known module]
item. To workaround this problem for the current session, set the contents of the
/proc/sys/kernel/kptr_restrict
file to 0 before starting the
VTune
Profiler
as follows:
sysctl -w kernel.kptr_restrict=0
To resolve symbols for the Linux kernel, the
VTune
Profiler
also uses the
System.map
file created during the kernel build and shipped with the system by default. If the file is located in a non-default directory, you may add it to the list of search directories in the
Binary/Symbol Search
dialog box when configuring your target properties.
The settings in the
/proc/kallsyms
and
System.map
file enable the
VTune
Profiler
to resolve kernel symbols and view kernel functions and kernel stacks but do not enable the assembly analysis.

Download and Install Available Debug Kernel Versions

After installing the Linux operating system, the kernel is contained in
vmlinux
, or
vmlinuz
, or
bzImage
in
/boot
. Linux vendors typically release compressed kernel files stripped of symbols (
vmlinuz
or
bzImage
).
vmlinux
is the uncompressed Linux kernel, but it does not include debug information. So, by default the
VTune
Profiler
cannot retrieve kernel function information from these kernels and presents all hot addresses captured in the kernel as a unique function or module named
[vmlinux]
. However, some vendors have released special debug versions of their kernels that are suitable for performance analysis.
  1. Use the
    uname -r
    command to identify the running Linux kernel version.
  2. Download and install two RPMs matching your system:
    kernel-debug-debuginfo-*.rpm
    and
    kernel-debuginfo-common-*.rpm
    . To do this, use any of the following options:
    • Browse through the RPMs on your installation CDs or DVDs. For example, for SuSE Linux Enterprise* 9, 10, and 11 distros, SuSE provides "debug" kernel RPMs (
      kernel-debug-*.rpm
      ) available on the install CD or from the website. After installing the RPM, the debug version of the kernel file is located under
      /boot/vmlinux-*-debug
      or under
      /boot/vmlinuz-*-debug
      . You need to manually uncompress this kernel file using the
      gunzip
      program.
    • Browse through the OS vendor FTP site and download the packages. For example: look at ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os to get packages for Redhat* Enterprise Server.
    • Look for other sources on the internet. For example, for Red Hat Enterprise* Linux 3, 4 and 5 distros, Red Hat provides
      debuginfo
      RPMs at http://people.redhat.com/duffy/debuginfo/. After installing the RPM, the debug version of the kernel file is located under
      /usr/lib/debug/boot
      (EL 3) or
      /usr/lib/debug/lib/modules
      (EL 4, 5).
  3. Use the following commands to install the RPMs:
    rpm -ivh kernel-debuginfo-common-*.rpm rpm -ivh kernel-debug-debuginfo-*.rpm
    For some operating systems, you can use
    yum
    to install packages directly, for example:
    yum --enablerepo=rhel-debuginfo install kernel-debuginfo
  4. Verify that the packages have been installed, for example:
    rpm -qa|grep kernel
  5. Modify the
    VTune
    Profiler
    target properties and specify the path to the uncompressed kernel binary in the Dialog Box: Binary/Symbol Search , for example:
    /usr/lib/debug/lib/modules/2.6.18-128.el5debug/
    .

Build the Linux Kernel with Debug Information

  1. Edit the kernel source top-level Makefile and add the
    -g
    option to the following variables:
    CFLAGS_KERNEL := -g
    CFLAGS := -g
  2. Run
    make clean; make
    to create the
    vmlinux
    kernel file with debug information. Once a debug version of the kernel is created or obtained, specify that kernel file as the one to use during performance analysis.
As soon as the debug information is available for your kernel modules, any future analysis runs will display the kernel functions appropriately. To resolve the previously collected data against this new symbol information, update the project Search Directories and click the
Re-resolve
button to apply the changes.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804