The following is a demonstration of the cpuwalk.d script,
 
 
 cpuwalk.d is not that useful on a single CPU server,
 
    # cpuwalk.d
    Sampling... Hit Ctrl-C to end.
    ^C
    
         PID: 18843    CMD: bash
    
               value  ------------- Distribution ------------- count
                 < 0 |                                         0
                   0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 30
                   1 |                                         0
    
         PID: 8079     CMD: mozilla-bin
    
               value  ------------- Distribution ------------- count
                 < 0 |                                         0
                   0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 10
                   1 |                                         0
 
 The output above shows that PID 18843, "bash", was sampled on CPU 0 a total
 of 30 times (we sample at 1000 hz).
 
 
 
 The following is a demonstration of running cpuwalk.d with a 5 second
 duration. This is on a 4 CPU server running a multithreaded CPU bound
 application called "cputhread",
 
    # cpuwalk.d 5
    Sampling...
    
         PID: 3        CMD: fsflush
    
               value  ------------- Distribution ------------- count
                   1 |                                         0
                   2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 30
                   3 |                                         0
    
         PID: 12186    CMD: cputhread
    
               value  ------------- Distribution ------------- count
                 < 0 |                                         0
                   0 |@@@@@@@@@@                               4900
                   1 |@@@@@@@@@@                               4900
                   2 |@@@@@@@@@@                               4860
                   3 |@@@@@@@@@@                               4890
                   4 |                                         0
 
 As we are sampling at 1000 hz, the application cputhread is indeed running
 concurrently across all available CPUs. We measured the applicaiton on
 CPU 0 a total of 4900 times, on CPU 1 a total of 4900 times, etc. As there
 are around 5000 samples per CPU available in this 5 second 1000 hz sample,
 the application is using almost all the CPU capacity in this server well.
 
 
 
 The following is a similar demonstration, this time running a multithreaded
 CPU bound application called "cpuserial" that has a poor use of locking
 such that the threads "serialise",
 
 
    # cpuwalk.d 5
    Sampling...
    
         PID: 12194    CMD: cpuserial
    
               value  ------------- Distribution ------------- count
                 < 0 |                                         0
                   0 |@@@                                      470
                   1 |@@@@@@                                   920
                   2 |@@@@@@@@@@@@@@@@@@@@@@@@@                3840
                   3 |@@@@@@                                   850
                   4 |                                         0
 
 In the above, we can see that this CPU bound application is not making
 efficient use of the CPU resources available, only reaching 3840 samples
 on CPU 2 out of a potential 5000. This problem was caused by a poor use
 of locks.