I am using callgrind to profile a linux multi-threaded app and mostly it's working great. I start it with instrumentation off (--instr-atstart=no) and then once setup is done i turn it on with callgrind_control -i on. However, when I change certain configurations to try to profile a different part of the app it starts running extremely slow even before I turn instrumentation on. Basically part of the code that would take a few seconds with normal operation takes over an hour with callgrind (instrumentation turned off). Any ideas as to why that might be and how to go about debugging/resolving the slowness?
callgrind slow with instrumentation turned off
3.2k Views Asked by naumcho At
1
There are 1 best solutions below
Related Questions in C++
- C++ using std::vector across boundaries
- Linked list without struct
- Connecting Signal QML to C++ (Qt5)
- how to get the reference of struct soap inherited in C++ Proxy/Service class
- Why we can't assign value to pointer
- Conversion of objects in c++
- shared_ptr: "is not a type" error
- C++ template using pointer and non pointer arguments in a QVector
- C++ SFML 2.2 vectors
- Lifetime of temporary objects
- I want to be able to use 4 different variables in a select statement in c ++
- segmentation fault: 11, extracting data in vector
- How to catch delay-import dll errors (missing dll or symbol) in MinGW(-w64)?
- How can I print all the values in this linked list inside a hash table?
- Configured TTL for A record(s) backing CNAME records
Related Questions in LINUX
- How do I recursively find and replace only in files named index.php on Linux webserver?
- passing text with \n as one argument in shell
- kernel module does not print packet info
- How to send ESC/POS commands to thermal printer in Linux
- (x64 Nasm) Writeline function on Linux
- How do I set the Hive user to something different than the Spark user from within a Spark program?
- Default priority of thread with SCHED_FIFO
- Calling a python function with options from shell script
- How to split a directory into parts without compressing or archiving?
- Cross compile simple standard C program on Linux for Mac
- How to offload NAPI poll function to workqueue
- python netifaces - How to get currently used network interface
- Unexpected output from function
- mingw-64 conflicting declarations when cross-compiling
- Different behavior of async with Visual Studio 2013(Windows8.1) and GCC 4.9(Ubuntu14.10)
Related Questions in PROFILING
- How to profile a Yii2 based API?
- "Capture GPU Frame" in XCode -- iOS only?
- How does one debug infinite recursion in Haskell?
- What is the procedure for profiling under GHC 7.10.1 and cabal 1.23?
- Visual Studio 2013 unable to create diagnostic report
- Xdebug profiling shows different execution time than actual one
- Application is faster when profiling
- Why is this script slowing down per item with increased amount of input?
- ASP.NET MVC application profiling
- Memory leak due to Window.EfectiveValues retention
- Can't get golang pprof working
- What is difference between "node --prof" and using node-profiler
- Improve performance on processing a big pandas dataframe
- Visualvm thread started count
- optimize arithmetic operations with stl vector
Related Questions in VALGRIND
- What does Jump to means in callgrind?
- valgrind shows me a leak when using libxml2
- cuda-memcheck fails to detect memory leak in an R package
- Conditional jump or moves depends on uninitialised value(s) - strcat
- valgrind improper output location
- Destructor and Classes in C++ [ Memory Leak]
- Valgrind Invalid Read Error
- Why do I get a still reachable block after mallocing a char*?
- Valgrind getting strange error
- Trimesh - leak memory
- Using the valgrind massif tool, Result file not created
- Valgrind newbie, can't seem to make it happy
- Valgrind not showing line numbers - Yosemite 10.10.3
- Memcheck my Qt5 app: Killed
- Linux - source files/lines doesn't appear when running valgrind
Related Questions in CALLGRIND
- Valgrind callgrind extremely slow with C++ regex
- C++ profiling: clock cycle count
- Callgrind main() inclusive cost much smaller than 100%
- Valgrind ignore templates in output
- callgrind slow with instrumentation turned off
- LibreOffice: determine source code part responsible for printing
- stopping instrumentation in callgrind
- Should I trust profiling inside or outside of callgrind for a function that calls glibc's sin()?
- how to install kcachegrind on linux or cirrus?
- Callgrind output does not include function calls
- Tools to evaluate callgrind's call profiles?
- How to view the source code in Kcachegrind
- Callgrind inlined functions
- Why does Valgrind hang on SDL_Init (SDL2) call?
- Tracking down unnecessary copies with callgrind
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Callgrind is a tool, built on valgrind. Valgrind is basically a dynamic binary translator (libVEX, part of valgrind). It will decode every instruction and JIT-compile them into stream of some instructions of the same CPU.
As I know, there is no way to enable this translation (in valgrind implementation) for already running process, so dynamic translation is enabled all time, from start of program. It can't be turned off too.
Tools are built on valgrind by adding some instrumentation code. The "Nul" tool (nulgrind) is the tool which adds no instrumentation. But every tool uses valgrind and dynamic translation is active all time. Turning on and off in callgrind is just turning on and off additional instrumentation.
Virtual CPU, implemented by Valgrind is limited, there is (incomplete) list of limitations http://valgrind.org/docs/manual/manual-core.html#manual-core.limits Most of limitations are about floating point operations, and they can be emulated wrong.
Is the change connected with floating-point operations? Or with other listed limitations?
Also you should know, that "Valgrind serialises execution so that only one thread is running at a time". (from the same page manual-core.html)