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 sh_calldist.d.

This script traces the elapsed time of Bourne shell functions and
prints a report containing distribution plots per function. Here it
traces the example program, Code/Shell/func_abc.sh.

   # sh_calldist.d
   Tracing... Hit Ctrl-C to end.
   ^C
   
   Elapsed times (us),
   
      func_abc.sh, builtin, echo 
              value  ------------- Distribution ------------- count    
                  8 |                                         0        
                 16 |@@@@@@@@@@@@@                            1        
                 32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@              2        
                 64 |                                         0        
   
      func_abc.sh, cmd, sleep 
              value  ------------- Distribution ------------- count    
             262144 |                                         0        
             524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3        
            1048576 |                                         0        
   
   Exclusive function elapsed times (us),
   
      func_abc.sh, func, func_a 
              value  ------------- Distribution ------------- count    
               1024 |                                         0        
               2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
               4096 |                                         0        
   
      func_abc.sh, func, func_b 
              value  ------------- Distribution ------------- count    
               1024 |                                         0        
               2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
               4096 |                                         0        
   
      func_abc.sh, func, func_c 
              value  ------------- Distribution ------------- count    
               1024 |                                         0        
               2048 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
               4096 |                                         0        
   
   Inclusive function elapsed times (us),
   
      func_abc.sh, func, func_c 
              value  ------------- Distribution ------------- count    
             262144 |                                         0        
             524288 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
            1048576 |                                         0        
   
      func_abc.sh, func, func_b 
              value  ------------- Distribution ------------- count    
             524288 |                                         0        
            1048576 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
            2097152 |                                         0        
   
      func_abc.sh, func, func_a 
              value  ------------- Distribution ------------- count    
            1048576 |                                         0        
            2097152 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
            4194304 |                                         0        

The elapsed times show that the echo builtin takes between 16 and 64 us
to execute.

The exclusive function elapsed times show that each function spent
between 2 and 4 ms. This exclusive time excludes the time spent in
other functions.

The inclusive function elapsed times show that func_c() took between 0.5 and
1.0 seconds, func_b() took between 1.0 and 2.1 seconds, and func_a() took
between 2.1 and 4.2 seconds to execute. This inclusive time includes the
time spent in other functions and commands called, and since func_a()
calls func_b() which calls func_c(), and, each function is calling "sleep 1",
these times make sense.

These elapsed times are the absolute time from when the function began to
when it completed - which includes off-CPU time due to other system events
such as I/O, scheduling, interrupts, etc.

Elapsed times are useful for identifying where latencies are.
See Notes/ALLelapsed_notes.txt for more details. Also see
Notes/ALLexclusive_notes.txt and Notes/ALLinclusive_notes.txt for a
detailed explanation of exclusive vs inclusive function time.



The following traces the firefox startup script.

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

Elapsed times (us),

   run-mozilla.sh, builtin, return 
           value  ------------- Distribution ------------- count    
               0 |                                         0        
               1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
               2 |                                         0        

   run-mozilla.sh, builtin, shift 
           value  ------------- Distribution ------------- count    
               0 |                                         0        
               1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
               2 |                                         0        

   run-mozilla.sh, builtin, break 
           value  ------------- Distribution ------------- count    
               1 |                                         0        
               2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
               4 |                                         0        

   firefox, builtin, break 
           value  ------------- Distribution ------------- count    
               2 |                                         0        
               4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
               8 |                                         0        

   run-mozilla.sh, builtin, export 
           value  ------------- Distribution ------------- count    
               0 |                                         0        
               1 |@@@@@@@@@@@@@                            1        
               2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@              2        
               4 |                                         0        

   firefox, builtin, export 
           value  ------------- Distribution ------------- count    
               1 |                                         0        
               2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@              2        
               4 |@@@@@@@@@@@@@                            1        
               8 |                                         0        

   firefox, builtin, : 
           value  ------------- Distribution ------------- count    
               0 |                                         0        
               1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@        5        
               2 |                                         0        
               4 |@@@@@@@                                  1        
               8 |                                         0        

   firefox, builtin, pwd 
           value  ------------- Distribution ------------- count    
              16 |                                         0        
              32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
              64 |                                         0        

   firefox, builtin, test 
           value  ------------- Distribution ------------- count    
              16 |                                         0        
              32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
              64 |                                         0        

   firefox, builtin, cd 
           value  ------------- Distribution ------------- count    
               4 |                                         0        
               8 |@@@@@@@@@@@@@                            1        
              16 |@@@@@@@@@@@@@                            1        
              32 |@@@@@@@@@@@@@                            1        
              64 |                                         0        

   firefox, builtin, [ 
           value  ------------- Distribution ------------- count    
               0 |                                         0        
               1 |@@@@@@@                                  3        
               2 |@@                                       1        
               4 |@@                                       1        
               8 |@@@@@@@                                  3        
              16 |@@@@@@@@@@@                              5        
              32 |@@@@@@@                                  3        
              64 |@@@@                                     2        
             128 |                                         0        

   run-mozilla.sh, builtin, type 
           value  ------------- Distribution ------------- count    
             256 |                                         0        
             512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
            1024 |                                         0        

   run-mozilla.sh, builtin, [ 
           value  ------------- Distribution ------------- count    
               0 |                                         0        
               1 |@@@@@@@@                                 4        
               2 |@@@@@@@@@@                               5        
               4 |@@@@                                     2        
               8 |@@@@@@                                   3        
              16 |@@@@@@@@@@                               5        
              32 |                                         0        
              64 |                                         0        
             128 |                                         0        
             256 |                                         0        
             512 |                                         0        
            1024 |                                         0        
            2048 |@@                                       1        
            4096 |                                         0        

   firefox, builtin, echo 
           value  ------------- Distribution ------------- count    
              64 |                                         0        
             128 |@@@@@@@@@@@@@@@@@@@@                     1        
             256 |                                         0        
             512 |                                         0        
            1024 |                                         0        
            2048 |@@@@@@@@@@@@@@@@@@@@                     1        
            4096 |                                         0        

   firefox, cmd, /usr/lib/firefox/run-mozilla.sh 
           value  ------------- Distribution ------------- count    
         2097152 |                                         0        
         4194304 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
         8388608 |                                         0        

   run-mozilla.sh, cmd, /usr/lib/firefox/firefox-bin 
           value  ------------- Distribution ------------- count    
         2097152 |                                         0        
         4194304 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
         8388608 |                                         0        

Exclusive function elapsed times (us),

   run-mozilla.sh, func, moz_test_binary 
           value  ------------- Distribution ------------- count    
              16 |                                         0        
              32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
              64 |                                         0        

   firefox, func, moz_spc_verbose_echo 
           value  ------------- Distribution ------------- count    
               2 |                                         0        
               4 |@@@@@@@@@@@@@                            2        
               8 |@@@@@@@@@@@@@                            2        
              16 |@@@@@@@@@@@@@                            2        
              32 |                                         0        

   firefox, func, moz_pis_startstop_scripts 
           value  ------------- Distribution ------------- count    
             128 |                                         0        
             256 |@@@@@@@@@@@@@@@@@@@@                     1        
             512 |                                         0        
            1024 |                                         0        
            2048 |                                         0        
            4096 |                                         0        
            8192 |                                         0        
           16384 |                                         0        
           32768 |@@@@@@@@@@@@@@@@@@@@                     1        
           65536 |                                         0        

   run-mozilla.sh, func, moz_run_program 
           value  ------------- Distribution ------------- count    
           65536 |                                         0        
          131072 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
          262144 |                                         0        

Inclusive function elapsed times (us),

   firefox, func, moz_spc_verbose_echo 
           value  ------------- Distribution ------------- count    
               4 |                                         0        
               8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@              4        
              16 |@@@@@@@@@@@@@                            2        
              32 |                                         0        

   run-mozilla.sh, func, moz_test_binary 
           value  ------------- Distribution ------------- count    
              32 |                                         0        
              64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
             128 |                                         0        

   firefox, func, moz_pis_startstop_scripts 
           value  ------------- Distribution ------------- count    
             128 |                                         0        
             256 |@@@@@@@@@@@@@@@@@@@@                     1        
             512 |                                         0        
            1024 |                                         0        
            2048 |                                         0        
            4096 |                                         0        
            8192 |                                         0        
           16384 |                                         0        
           32768 |@@@@@@@@@@@@@@@@@@@@                     1        
           65536 |                                         0        

   run-mozilla.sh, func, moz_run_program 
           value  ------------- Distribution ------------- count    
         2097152 |                                         0        
         4194304 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
         8388608 |                                         0        


As an example of interpreting the output: the inclusive elapsed time for
the "[" (test) builtin,

   firefox, builtin, [ 
           value  ------------- Distribution ------------- count    
               0 |                                         0        
               1 |@@@@@@@                                  3        
               2 |@@                                       1        
               4 |@@                                       1        
               8 |@@@@@@@                                  3        
              16 |@@@@@@@@@@@                              5        
              32 |@@@@@@@                                  3        
              64 |@@@@                                     2        
             128 |                                         0        

shows that it was called 17 times (after adding up the counts), 5 of which
took between 16 and 31 microseconds.