Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

The following are examples of php_cputime.d.

This script traces the on-CPU time of PHP functions and prints a report. 
Here it traces the example program, Code/Php/func_abc.php.

# php_cputime.d
Tracing... Hit Ctrl-C to end.
^C

Count,
   FILE                 TYPE       NAME                                COUNT
   func_abc.php         func       func_a                                  1
   func_abc.php         func       func_b                                  1
   func_abc.php         func       func_c                                  1
   func_abc.php         func       sleep                                   3
   -                    total      -                                       6

Exclusive function on-CPU times (us),
   FILE                 TYPE       NAME                                TOTAL
   func_abc.php         func       func_c                                 17
   func_abc.php         func       func_b                                 25
   func_abc.php         func       func_a                                 74
   func_abc.php         func       sleep                                  93
   -                    total      -                                     210

Inclusive function on-CPU times (us),
   FILE                 TYPE       NAME                                TOTAL
   func_abc.php         func       func_c                                 39
   func_abc.php         func       func_b                                 87
   func_abc.php         func       sleep                                  93
   func_abc.php         func       func_a                                210

In total, six functions were called; sleep was called three times and there
was one call each of func_a(), func_b() and func_c().

The exclusive subroutine on-CPU times show that func_a() spent around 74
microseconds on-CPU, func_b() spent 25 microseconds on-CPU, and func_c() spent 
17 microseconds on-CPU. This exclusive times excludes time spent in other 
subroutines.

The inclusive subroutine on-CPU times show that func_c() spent around 39
microseconds on-CPU, func_b() spent around 87 microseconds on-CPU and 
func_a() spent around 210 microseconds. This inclusive time includes the time 
spent in other functions called (including sleep),  and since func_a() called 
func_b() which called func_c(), these times make perfect sense.

These on-CPU times are the time the program spent running on a CPU, from when
the function 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.

If you study the func_abc.php program alongside the above output, the numbers
should make sense.