Analyzers
Talk to fellow users of Intel Analyzer tools (Intel VTune™ Profiler, Intel Advisor)

Cannot locate debugging symbols and a lot of idle CPU usage

luca_l_
Beginner
770 Views

Hello, I'm new to VTune Amplifier and I'm trying to profile OpenCV with a very basic application. Following this guide on recommended compiler options, I compiled OpenCV via CMake with CMAKE_BUILD_TYPE=RelWithDebInfo and -DWITH_OPENMP=ON so both -O2 and -g options are included and OpenMP enabled. My testing OpenCV application is compiled with

g++ -I/home/luca/Dropbox/SURFSPM/opencvInstall/include -O3 -g -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.o" -o "main.o" "../main.cpp"

via eclipse.

 However, when I try to analyze my application this is the collection Log:

Data collection is completed successfully
    Sunday, February 05, 2017 AM11:44:53 CET  The result file '/home/luca/intel/amplxe/projects/OpenCV/r000hs/r000hs.amplxe' is successfully created and added to the project OpenCV. 

Finalization completed with warnings 
    Sunday, February 05, 2017 AM11:45:01 CET  Result finalization has completed with warnings that may affect the representation of the analysis data. Please see details below. 
    Cannot locate file `[stack]'.
    Cannot locate debugging symbols for file `/lib/x86_64-linux-gnu/libgcc_s.so.1'.
    Cannot match the module with the symbol file `/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21': checksum is different. Make sure to specify the correct path to the symbol file in the Binary/Symbol Search list of directories.
    Cannot locate debugging symbols for file `/usr/lib/x86_64-linux-gnu/libstdc++.so.6'.
    Cannot locate debugging symbols for file `/opt/intel/vtune_amplifier_xe_2017.1.0.486011/lib64/runtime/libittnotify_collector.so'.
    Cannot locate debugging symbols for file `/lib64/ld-linux-x86-64.so.2'.
    Cannot locate debugging symbols for file `/usr/lib/x86_64-linux-gnu/libpng12.so.0'.
    Cannot locate debugging symbols for file `/usr/local/lib/libopencv_xfeatures2d.so.3.1'.
    Cannot locate debugging symbols for file `/opt/intel/vtune_amplifier_xe_2017.1.0.486011/lib64/libtpsstool.so'.
    Cannot locate debugging symbols for file `/usr/local/lib/libopencv_core.so.3.1'.
    Cannot locate debugging symbols for file `/usr/local/lib/libopencv_imgcodecs.so.3.1'.
    Cannot locate debugging symbols for file `/usr/local/lib/libopencv_imgproc.so.3.1'.

In addition, as you can see from the following image, most of the time the CPU usage is in idle:

 

 

Which make me think that this warning messages are important and I'm doing something wrong.

0 Kudos
4 Replies
Vitaly_S_Intel
Employee
770 Views

Hi luca,

Please note that "CPU Usage" histogram treats all the "Spin and Overhead time" as Idle. I recommend you to switch to Bottom-up to see the hotspots and analyze why these functions aren't using CPU efficiently. You can also ignore these warning messages on finalization, presence of debug info for system libraries may improve the quality of call stacks and get better names for the functions from system libraries.

0 Kudos
TimP
Honored Contributor III
770 Views

The indication that you have switched .so at run time seems a bad sign.  For such a short run you would reduce sampling interval from default.

0 Kudos
luca_l_
Beginner
770 Views

Vitaly Slobodskoy (Intel) wrote:

Hi luca,

Please note that "CPU Usage" histogram treats all the "Spin and Overhead time" as Idle. I recommend you to switch to Bottom-up to see the hotspots and analyze why these functions aren't using CPU efficiently. You can also ignore these warning messages on finalization, presence of debug info for system libraries may improve the quality of call stacks and get better names for the functions from system libraries.

What do you mean by "Spin and Overhead time"? Btw I built the called library with CMAKE RelWithDebInfo (which uses -d and -O2 without -O0 which is discouraged), I'll see if it improves things.

0 Kudos
luca_l_
Beginner
770 Views

Tim P. wrote:

The indication that you have switched .so at run time seems a bad sign.  For such a short run you would reduce sampling interval from default.

Why calling an external library should be a bad sign? Anyway, the default sampling interval is 10ms if I'm not wrong, isn't it enough? Anyway, I'll try even smaller values.

0 Kudos
Reply