Jakub Narębski
Jakub Narębski

Reputation: 323752

Profiling tool on Linux showing size of parameters passed to invoked functions

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

Answers (1)

sehe
sehe

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

Related Questions