Chris Pickett wrote:
> Hi,
>
> Has anybody had any luck with profiling SableVM? I need to do this to
> cut down on the overhead of my speculative multithreading work, because
> currently benchmarks take too long to execute for an efficient
> write-compile-test-debug cycle.
So, after more trying with gprof, OProfile, and FunctionCheck ... I
spoke to Clark, and he soon found qprof, released under the GPL by HP
(Google finds different things for different people).
It works great! Even with just a simple install, I get:
$ qprof_start
$ sablevm-chris-switch-spmt-debug -Y DmdNoStrings random2000.dg
Number of components: 399
qprof:
/home/research/ccl/cpicke/temp/bin/sablevm-chris-switch-spmt-debug: 5710
samples, 5710 counts
[0x4000dea4] 2 ( 0%)
libsablevm.so.1 286 ( 5%)
libsablevm.so.1(_svmf_buffer_create) 2 ( 0%)
libsablevm.so.1(_svmf_buffer_validate) 40 ( 1%)
libsablevm.so.1(_svmf_buffer_commit) 51 ( 1%)
libsablevm.so.1(_svmf_buffer_destroy) 4 ( 0%)
libsablevm.so.1(_svmf_buffer_status_ok) 1 ( 0%)
libsablevm.so.1(_svmf_predictor_read_jint) 2 ( 0%)
libsablevm.so.1(_svmf_predictor_write_jint) 29 ( 1%)
libpthread.so.0(__pthread_mutex_trylock) 8 ( 0%)
libpthread.so.0(__pthread_mutex_lock) 4 ( 0%)
libpthread.so.0(__pthread_mutex_unlock) 40 ( 1%)
libc.so.6(malloc) 127 ( 2%)
libc.so.6(__libc_free) 29 ( 1%)
libc.so.6(calloc) 17 ( 0%)
libc.so.6(__default_morecore) 4 ( 0%)
libc.so.6(strncpy) 1 ( 0%)
libc.so.6(memset) 117 ( 2%)
libc.so.6(memcpy) 4804 ( 84%)
libc.so.6(__open) 3 ( 0%)
libc.so.6(brk) 136 ( 2%)
libc.so.6(sbrk) 3 ( 0%)
$ qprof_stop
Which is just the kind of thing I was looking for!
(this is with qprof-0.5 and libunwind-0.96, both available from HP --
you need to put a symlink to or extract libunwind-0.96 in the qprof-0.5
directory for qprof's make to enable libunwind functionality)
I am pretty sure I can get more detailed info if I set things up; I'm
just sending this mail to report that we have a usable C profiler now.
Cheers,
Chris
|