Why aren't Linux* kernel functions displayed in the Results?

Problem:

After collecting lightweight-hotspots data, you may find that functions within the kernel are not displayed in the results.  Instead, the function or module name is displayed as "[vmlinux]", e.g.:

vmlinux.png

Root-cause
:

After installing the Linux* operating system, the kernel is contained in vmlinux, or vmlinuz, or bzImage in /boot. vmlinux is the uncompressed Linux* kernel, but doesn't include debug information. vmlinuz or bzImage is the compressed kernel and the VTuneAmplifier XE can't retrieved kernel function information from them. Thus, all hot addresses captured in the kernel are contained in a unique function or module named "[vmlinux]".

Solution:

The VTune Amplifier XE must have access to symbol information for the kernel in order to display function names.  To provide kernel symbol information to the VTune Amplifier XE, follow these steps:

 

  1. Use "uname -r" to identify the running Linux* kernel version -- you must download and install the matching kernel-debuginfo RPMs.  Two RPMs are required: kernel-debug-debuginfo-*.rpm and kernel-debuginfo-common-*.rpm
  2. Locate these RPMs.  Several options exist:
    1. Browse through the RPMs on your installation CDs or DVDs.
    2. 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.
    3. Look for other sources on the internet.  For example: http://people.redhat.com/duffy/debuginfo/index-js.html
  3. Use the following commands to install the RPMs:
    1. rpm -ivh kernel-debuginfo-common-*.rpm
    2. rpm -ivh kernel-debug-debuginfo-*.rpm
  4. For some operating systems, you can use "yum" to install packages directly. For example, yum --enablerepo=rhel-debuginfo install kernel-debuginfo
  5. Verify that the packages have been installed, e.g., "rpm -qa|grep kernel"
  6. Modify the Project Properties and specify the path to the uncompressed kernel binary, for example,  /usr/lib/debug/lib/modules/2.6.18-128.el5debug/
  7. To resolve the previously collected data against this new symbol information, see this article.
  8. Any future lightweight-hotspots analyses will display the kernel functions appropriately.
Para obtener más información sobre las optimizaciones del compilador, consulte el aviso sobre la optimización.