Reputation: 323752
Can any of profiling (performance measure) tools on Linux (OProfile, perf events, HTC Toolkit) show call graph with size of parameters (data size) passed to function / procedure?
In other words I'd like to visualize data flow in a profiled application (best together with profile data, i.e. time spent in a function / subroutine).
Note: when arrays (vectors and matrices) are passed to subroutine / function, I am interested not only in size of pointer, but size of the whole data.
Upvotes: 0
Views: 175
Reputation: 393487
Beyond my skeptic remarks, I have a growing sense that you really want to have a metric that represents 'memory bandwidth', correlated to certain parts of your code.
I have a hunch that you might get mileage out of oprofile. oprof_start
gui has a nice checklist of metrics
http://oprofile.sourceforge.net/docs/intel-p6-mobile-events.php
(NOTE: these are CPU dependent, see http://oprofile.sourceforge.net/docs/ or op_help
for details on your CPU)
These seem interesting:
DATA_MEM_REFS all memory references, cachable and non
L2_LD number of L2 data loads
L2_ST number of L2 data stores
perhaps some more, but I grew tired of reading things outside my area of expertise here
I think that perf
superseeds(?) oprofile, and it certainly has the easier interface to do (sampling) call graph profiling but I guess that if you want access to actual CPU performance counter events, oprofile may still be the place to go
Upvotes: 1