The following are examples of rb_cputime.d. This script traces the on-CPU time of Ruby functions and prints a report. Here it traces the example program, Code/Ruby/func_slow.rb # rb_cputime.d Tracing... Hit Ctrl-C to end. ^C Count, FILE TYPE NAME COUNT . obj-new NoMemoryError 1 . obj-new SystemStackError 1 . obj-new ThreadGroup 1 . obj-new fatal 1 func_slow.rb func Object::func_a 1 func_slow.rb func Object::func_b 1 func_slow.rb func Object::func_c 1 . obj-new Object 3 func_slow.rb func IO::write 3 func_slow.rb func Module::method_added 3 func_slow.rb func Object::print 3 func_slow.rb func Fixnum::< 600003 func_slow.rb func Fixnum::+ 1200000 - total - 1800015 Elapsed times (us), FILE TYPE NAME TOTAL . obj-new SystemStackError 2 . obj-new NoMemoryError 2 . obj-new fatal 11 . obj-new ThreadGroup 12 . obj-new Object 19 Exclusive function on-CPU times (us), FILE TYPE NAME TOTAL func_slow.rb func Module::method_added 4 func_slow.rb func Object::print 57 func_slow.rb func IO::write 180 func_slow.rb func Object::func_a 405946 func_slow.rb func Fixnum::< 691125 func_slow.rb func Object::func_b 809970 func_slow.rb func Object::func_c 1225235 func_slow.rb func Fixnum::+ 1285200 - total - 4417721 Inclusive function on-CPU times (us), FILE TYPE NAME TOTAL func_slow.rb func Module::method_added 4 func_slow.rb func IO::write 180 func_slow.rb func Object::print 238 func_slow.rb func Fixnum::< 691125 func_slow.rb func Fixnum::+ 1285200 func_slow.rb func Object::func_c 2212572 func_slow.rb func Object::func_b 3683688 func_slow.rb func Object::func_a 4417717 You can see the results are printed in four sections. The first section reports how many times each subroutine was called, and it's type. The second section reports on the on-CPU time of anything that was not of type "func", in this case the only elements reported here are of type obj-new. The exclusive function on-CPU times shows, amongst other results, that func_a spent around 0.4 seconds on-CPU. This time excludes time spent in other subroutines. The inclusive function on-CPU times show that func_a spent around 4.4 seconds on-CPU. This includes the time spent in other subroutines called. These on-CPU times are the time the thread spent running on a CPU, from when the subroutine began to when it completed. This does not include time spent off-CPU time such as sleeping for I/O or waiting for scheduling. On-CPU times are useful for showing who is causing the CPUs to be busy. See Notes/ALLoncpu_notes.txt for more details. Also see Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a detailed explanation of exclusive vs inclusive subroutine time. |