1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of runqlat, the Linux eBPF/bcc version. 2*387f9dfdSAndroid Build Coastguard Worker 3*387f9dfdSAndroid Build Coastguard Worker 4*387f9dfdSAndroid Build Coastguard WorkerThis program summarizes scheduler run queue latency as a histogram, showing 5*387f9dfdSAndroid Build Coastguard Workerhow long tasks spent waiting their turn to run on-CPU. 6*387f9dfdSAndroid Build Coastguard Worker 7*387f9dfdSAndroid Build Coastguard WorkerHere is a heavily loaded system: 8*387f9dfdSAndroid Build Coastguard Worker 9*387f9dfdSAndroid Build Coastguard Worker# ./runqlat 10*387f9dfdSAndroid Build Coastguard WorkerTracing run queue latency... Hit Ctrl-C to end. 11*387f9dfdSAndroid Build Coastguard Worker^C 12*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 13*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 233 |*********** | 14*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 742 |************************************ | 15*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 203 |********** | 16*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 173 |******** | 17*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 24 |* | 18*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 0 | | 19*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 30 |* | 20*387f9dfdSAndroid Build Coastguard Worker 128 -> 255 : 6 | | 21*387f9dfdSAndroid Build Coastguard Worker 256 -> 511 : 3 | | 22*387f9dfdSAndroid Build Coastguard Worker 512 -> 1023 : 5 | | 23*387f9dfdSAndroid Build Coastguard Worker 1024 -> 2047 : 27 |* | 24*387f9dfdSAndroid Build Coastguard Worker 2048 -> 4095 : 30 |* | 25*387f9dfdSAndroid Build Coastguard Worker 4096 -> 8191 : 20 | | 26*387f9dfdSAndroid Build Coastguard Worker 8192 -> 16383 : 29 |* | 27*387f9dfdSAndroid Build Coastguard Worker 16384 -> 32767 : 809 |****************************************| 28*387f9dfdSAndroid Build Coastguard Worker 32768 -> 65535 : 64 |*** | 29*387f9dfdSAndroid Build Coastguard Worker 30*387f9dfdSAndroid Build Coastguard WorkerThe distribution is bimodal, with one mode between 0 and 15 microseconds, 31*387f9dfdSAndroid Build Coastguard Workerand another between 16 and 65 milliseconds. These modes are visible as the 32*387f9dfdSAndroid Build Coastguard Workerspikes in the ASCII distribution (which is merely a visual representation 33*387f9dfdSAndroid Build Coastguard Workerof the "count" column). As an example of reading one line: 809 events fell 34*387f9dfdSAndroid Build Coastguard Workerinto the 16384 to 32767 microsecond range (16 to 32 ms) while tracing. 35*387f9dfdSAndroid Build Coastguard Worker 36*387f9dfdSAndroid Build Coastguard WorkerI would expect the two modes to be due the workload: 16 hot CPU-bound threads, 37*387f9dfdSAndroid Build Coastguard Workerand many other mostly idle threads doing occasional work. I suspect the mostly 38*387f9dfdSAndroid Build Coastguard Workeridle threads will run with a higher priority when they wake up, and are 39*387f9dfdSAndroid Build Coastguard Workerthe reason for the low latency mode. The high latency mode will be the 40*387f9dfdSAndroid Build Coastguard WorkerCPU-bound threads. More analysis with this and other tools can confirm. 41*387f9dfdSAndroid Build Coastguard Worker 42*387f9dfdSAndroid Build Coastguard Worker 43*387f9dfdSAndroid Build Coastguard WorkerA -m option can be used to show milliseconds instead, as well as an interval 44*387f9dfdSAndroid Build Coastguard Workerand a count. For example, showing three x five second summary in milliseconds: 45*387f9dfdSAndroid Build Coastguard Worker 46*387f9dfdSAndroid Build Coastguard Worker# ./runqlat -m 5 3 47*387f9dfdSAndroid Build Coastguard WorkerTracing run queue latency... Hit Ctrl-C to end. 48*387f9dfdSAndroid Build Coastguard Worker 49*387f9dfdSAndroid Build Coastguard Worker msecs : count distribution 50*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 3818 |****************************************| 51*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 39 | | 52*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 39 | | 53*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 62 | | 54*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 2214 |*********************** | 55*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 226 |** | 56*387f9dfdSAndroid Build Coastguard Worker 57*387f9dfdSAndroid Build Coastguard Worker msecs : count distribution 58*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 3775 |****************************************| 59*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 52 | | 60*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 37 | | 61*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 65 | | 62*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 2230 |*********************** | 63*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 212 |** | 64*387f9dfdSAndroid Build Coastguard Worker 65*387f9dfdSAndroid Build Coastguard Worker msecs : count distribution 66*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 3816 |****************************************| 67*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 49 | | 68*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 40 | | 69*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 53 | | 70*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 2228 |*********************** | 71*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 221 |** | 72*387f9dfdSAndroid Build Coastguard Worker 73*387f9dfdSAndroid Build Coastguard WorkerThis shows a similar distribution across the three summaries. 74*387f9dfdSAndroid Build Coastguard Worker 75*387f9dfdSAndroid Build Coastguard Worker 76*387f9dfdSAndroid Build Coastguard WorkerA -p option can be used to show one PID only, which is filtered in kernel for 77*387f9dfdSAndroid Build Coastguard Workerefficiency. For example, PID 4505, and one second summaries: 78*387f9dfdSAndroid Build Coastguard Worker 79*387f9dfdSAndroid Build Coastguard Worker# ./runqlat -mp 4505 1 80*387f9dfdSAndroid Build Coastguard WorkerTracing run queue latency... Hit Ctrl-C to end. 81*387f9dfdSAndroid Build Coastguard Worker 82*387f9dfdSAndroid Build Coastguard Worker msecs : count distribution 83*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 1 |* | 84*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 2 |*** | 85*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 1 |* | 86*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 0 | | 87*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 25 |****************************************| 88*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 3 |**** | 89*387f9dfdSAndroid Build Coastguard Worker 90*387f9dfdSAndroid Build Coastguard Worker msecs : count distribution 91*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 92*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 2 |** | 93*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 94*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 1 |* | 95*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 30 |****************************************| 96*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 1 |* | 97*387f9dfdSAndroid Build Coastguard Worker 98*387f9dfdSAndroid Build Coastguard Worker msecs : count distribution 99*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 100*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 101*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 102*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 0 | | 103*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 28 |****************************************| 104*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 2 |** | 105*387f9dfdSAndroid Build Coastguard Worker 106*387f9dfdSAndroid Build Coastguard Worker msecs : count distribution 107*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 1 |* | 108*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 109*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 110*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 0 | | 111*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 27 |****************************************| 112*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 4 |***** | 113*387f9dfdSAndroid Build Coastguard Worker[...] 114*387f9dfdSAndroid Build Coastguard Worker 115*387f9dfdSAndroid Build Coastguard WorkerFor comparison, here is pidstat(1) for that process: 116*387f9dfdSAndroid Build Coastguard Worker 117*387f9dfdSAndroid Build Coastguard Worker# pidstat -p 4505 1 118*387f9dfdSAndroid Build Coastguard WorkerLinux 4.4.0-virtual (bgregg-xxxxxxxx) 02/08/2016 _x86_64_ (8 CPU) 119*387f9dfdSAndroid Build Coastguard Worker 120*387f9dfdSAndroid Build Coastguard Worker08:56:11 AM UID PID %usr %system %guest %CPU CPU Command 121*387f9dfdSAndroid Build Coastguard Worker08:56:12 AM 0 4505 9.00 3.00 0.00 12.00 0 bash 122*387f9dfdSAndroid Build Coastguard Worker08:56:13 AM 0 4505 7.00 5.00 0.00 12.00 0 bash 123*387f9dfdSAndroid Build Coastguard Worker08:56:14 AM 0 4505 10.00 2.00 0.00 12.00 0 bash 124*387f9dfdSAndroid Build Coastguard Worker08:56:15 AM 0 4505 11.00 2.00 0.00 13.00 0 bash 125*387f9dfdSAndroid Build Coastguard Worker08:56:16 AM 0 4505 9.00 3.00 0.00 12.00 0 bash 126*387f9dfdSAndroid Build Coastguard Worker[...] 127*387f9dfdSAndroid Build Coastguard Worker 128*387f9dfdSAndroid Build Coastguard WorkerThis is a synthetic workload that is CPU bound. It's only spending 12% on-CPU 129*387f9dfdSAndroid Build Coastguard Workereach second because of high CPU demand on this server: the remaining time 130*387f9dfdSAndroid Build Coastguard Workeris spent waiting on a run queue, as visualized by runqlat. 131*387f9dfdSAndroid Build Coastguard Worker 132*387f9dfdSAndroid Build Coastguard Worker 133*387f9dfdSAndroid Build Coastguard WorkerHere is the same system, but when it is CPU idle: 134*387f9dfdSAndroid Build Coastguard Worker 135*387f9dfdSAndroid Build Coastguard Worker# ./runqlat 5 1 136*387f9dfdSAndroid Build Coastguard WorkerTracing run queue latency... Hit Ctrl-C to end. 137*387f9dfdSAndroid Build Coastguard Worker 138*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 139*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 2250 |******************************** | 140*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 2340 |********************************** | 141*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 2746 |****************************************| 142*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 418 |****** | 143*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 93 |* | 144*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 28 | | 145*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 119 |* | 146*387f9dfdSAndroid Build Coastguard Worker 128 -> 255 : 9 | | 147*387f9dfdSAndroid Build Coastguard Worker 256 -> 511 : 4 | | 148*387f9dfdSAndroid Build Coastguard Worker 512 -> 1023 : 20 | | 149*387f9dfdSAndroid Build Coastguard Worker 1024 -> 2047 : 22 | | 150*387f9dfdSAndroid Build Coastguard Worker 2048 -> 4095 : 5 | | 151*387f9dfdSAndroid Build Coastguard Worker 4096 -> 8191 : 2 | | 152*387f9dfdSAndroid Build Coastguard Worker 153*387f9dfdSAndroid Build Coastguard WorkerBack to a microsecond scale, this time there is little run queue latency past 1 154*387f9dfdSAndroid Build Coastguard Workermillisecond, as would be expected. 155*387f9dfdSAndroid Build Coastguard Worker 156*387f9dfdSAndroid Build Coastguard Worker 157*387f9dfdSAndroid Build Coastguard WorkerNow 16 threads are performing heavy disk I/O: 158*387f9dfdSAndroid Build Coastguard Worker 159*387f9dfdSAndroid Build Coastguard Worker# ./runqlat 5 1 160*387f9dfdSAndroid Build Coastguard WorkerTracing run queue latency... Hit Ctrl-C to end. 161*387f9dfdSAndroid Build Coastguard Worker 162*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 163*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 204 | | 164*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 944 |* | 165*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 16315 |********************* | 166*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 29897 |****************************************| 167*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 1044 |* | 168*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 23 | | 169*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 128 | | 170*387f9dfdSAndroid Build Coastguard Worker 128 -> 255 : 24 | | 171*387f9dfdSAndroid Build Coastguard Worker 256 -> 511 : 5 | | 172*387f9dfdSAndroid Build Coastguard Worker 512 -> 1023 : 13 | | 173*387f9dfdSAndroid Build Coastguard Worker 1024 -> 2047 : 15 | | 174*387f9dfdSAndroid Build Coastguard Worker 2048 -> 4095 : 13 | | 175*387f9dfdSAndroid Build Coastguard Worker 4096 -> 8191 : 10 | | 176*387f9dfdSAndroid Build Coastguard Worker 177*387f9dfdSAndroid Build Coastguard WorkerThe distribution hasn't changed too much. While the disks are 100% busy, there 178*387f9dfdSAndroid Build Coastguard Workeris still plenty of CPU headroom, and threads still don't spend much time 179*387f9dfdSAndroid Build Coastguard Workerwaiting their turn. 180*387f9dfdSAndroid Build Coastguard Worker 181*387f9dfdSAndroid Build Coastguard Worker 182*387f9dfdSAndroid Build Coastguard WorkerA -P option will print a distribution for each PID: 183*387f9dfdSAndroid Build Coastguard Worker 184*387f9dfdSAndroid Build Coastguard Worker# ./runqlat -P 185*387f9dfdSAndroid Build Coastguard WorkerTracing run queue latency... Hit Ctrl-C to end. 186*387f9dfdSAndroid Build Coastguard Worker^C 187*387f9dfdSAndroid Build Coastguard Worker 188*387f9dfdSAndroid Build Coastguard Workerpid = 0 189*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 190*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 351 |******************************** | 191*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 96 |******** | 192*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 437 |****************************************| 193*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 12 |* | 194*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 10 | | 195*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 0 | | 196*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 16 |* | 197*387f9dfdSAndroid Build Coastguard Worker 128 -> 255 : 0 | | 198*387f9dfdSAndroid Build Coastguard Worker 256 -> 511 : 0 | | 199*387f9dfdSAndroid Build Coastguard Worker 512 -> 1023 : 0 | | 200*387f9dfdSAndroid Build Coastguard Worker 1024 -> 2047 : 0 | | 201*387f9dfdSAndroid Build Coastguard Worker 2048 -> 4095 : 0 | | 202*387f9dfdSAndroid Build Coastguard Worker 4096 -> 8191 : 0 | | 203*387f9dfdSAndroid Build Coastguard Worker 8192 -> 16383 : 1 | | 204*387f9dfdSAndroid Build Coastguard Worker 205*387f9dfdSAndroid Build Coastguard Workerpid = 12929 206*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 207*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 1 |****************************************| 208*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 209*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 1 |****************************************| 210*387f9dfdSAndroid Build Coastguard Worker 211*387f9dfdSAndroid Build Coastguard Workerpid = 12930 212*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 213*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 214*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 215*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 216*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 0 | | 217*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 1 |****************************************| 218*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 0 | | 219*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 1 |****************************************| 220*387f9dfdSAndroid Build Coastguard Worker 221*387f9dfdSAndroid Build Coastguard Workerpid = 12931 222*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 223*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 224*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 225*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 1 |******************** | 226*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 0 | | 227*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 0 | | 228*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 0 | | 229*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 0 | | 230*387f9dfdSAndroid Build Coastguard Worker 128 -> 255 : 0 | | 231*387f9dfdSAndroid Build Coastguard Worker 256 -> 511 : 0 | | 232*387f9dfdSAndroid Build Coastguard Worker 512 -> 1023 : 2 |****************************************| 233*387f9dfdSAndroid Build Coastguard Worker 234*387f9dfdSAndroid Build Coastguard Workerpid = 12932 235*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 236*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 237*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 238*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 239*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 0 | | 240*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 0 | | 241*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 0 | | 242*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 0 | | 243*387f9dfdSAndroid Build Coastguard Worker 128 -> 255 : 1 |****************************************| 244*387f9dfdSAndroid Build Coastguard Worker 256 -> 511 : 0 | | 245*387f9dfdSAndroid Build Coastguard Worker 512 -> 1023 : 1 |****************************************| 246*387f9dfdSAndroid Build Coastguard Worker 247*387f9dfdSAndroid Build Coastguard Workerpid = 7 248*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 249*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 250*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 426 |************************************* | 251*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 457 |****************************************| 252*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 16 |* | 253*387f9dfdSAndroid Build Coastguard Worker 254*387f9dfdSAndroid Build Coastguard Workerpid = 9 255*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 256*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 257*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 258*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 425 |****************************************| 259*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 16 |* | 260*387f9dfdSAndroid Build Coastguard Worker 261*387f9dfdSAndroid Build Coastguard Workerpid = 11 262*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 263*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 264*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 10 |****************************************| 265*387f9dfdSAndroid Build Coastguard Worker 266*387f9dfdSAndroid Build Coastguard Workerpid = 14 267*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 268*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 269*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 8 |****************************************| 270*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 2 |********** | 271*387f9dfdSAndroid Build Coastguard Worker 272*387f9dfdSAndroid Build Coastguard Workerpid = 18 273*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 274*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 414 |****************************************| 275*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 276*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 20 |* | 277*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 8 | | 278*387f9dfdSAndroid Build Coastguard Worker 279*387f9dfdSAndroid Build Coastguard Workerpid = 12928 280*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 281*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 282*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 283*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 1 |****************************************| 284*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 0 | | 285*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 0 | | 286*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 0 | | 287*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 1 |****************************************| 288*387f9dfdSAndroid Build Coastguard Worker 289*387f9dfdSAndroid Build Coastguard Workerpid = 1867 290*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 291*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 292*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 293*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 294*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 15 |****************************************| 295*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 1 |** | 296*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 0 | | 297*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 0 | | 298*387f9dfdSAndroid Build Coastguard Worker 128 -> 255 : 4 |********** | 299*387f9dfdSAndroid Build Coastguard Worker 300*387f9dfdSAndroid Build Coastguard Workerpid = 1871 301*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 302*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 303*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 304*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 305*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 2 |****************************************| 306*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 0 | | 307*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 0 | | 308*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 0 | | 309*387f9dfdSAndroid Build Coastguard Worker 128 -> 255 : 0 | | 310*387f9dfdSAndroid Build Coastguard Worker 256 -> 511 : 0 | | 311*387f9dfdSAndroid Build Coastguard Worker 512 -> 1023 : 1 |******************** | 312*387f9dfdSAndroid Build Coastguard Worker 313*387f9dfdSAndroid Build Coastguard Workerpid = 1876 314*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 315*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 316*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 317*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 318*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 1 |****************************************| 319*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 0 | | 320*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 0 | | 321*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 0 | | 322*387f9dfdSAndroid Build Coastguard Worker 128 -> 255 : 0 | | 323*387f9dfdSAndroid Build Coastguard Worker 256 -> 511 : 1 |****************************************| 324*387f9dfdSAndroid Build Coastguard Worker 325*387f9dfdSAndroid Build Coastguard Workerpid = 1878 326*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 327*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 328*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 329*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 330*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 0 | | 331*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 3 |****************************************| 332*387f9dfdSAndroid Build Coastguard Worker 333*387f9dfdSAndroid Build Coastguard Workerpid = 1880 334*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 335*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 336*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 337*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 338*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 3 |****************************************| 339*387f9dfdSAndroid Build Coastguard Worker 340*387f9dfdSAndroid Build Coastguard Workerpid = 9307 341*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 342*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 343*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 344*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 345*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 1 |****************************************| 346*387f9dfdSAndroid Build Coastguard Worker 347*387f9dfdSAndroid Build Coastguard Workerpid = 1886 348*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 349*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 350*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 351*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 1 |******************** | 352*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 2 |****************************************| 353*387f9dfdSAndroid Build Coastguard Worker 354*387f9dfdSAndroid Build Coastguard Workerpid = 1888 355*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 356*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 357*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 358*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 359*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 3 |****************************************| 360*387f9dfdSAndroid Build Coastguard Worker 361*387f9dfdSAndroid Build Coastguard Workerpid = 3297 362*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 363*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 364*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 365*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 366*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 1 |****************************************| 367*387f9dfdSAndroid Build Coastguard Worker 368*387f9dfdSAndroid Build Coastguard Workerpid = 1892 369*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 370*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 371*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 372*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 373*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 0 | | 374*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 1 |******************** | 375*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 0 | | 376*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 0 | | 377*387f9dfdSAndroid Build Coastguard Worker 128 -> 255 : 0 | | 378*387f9dfdSAndroid Build Coastguard Worker 256 -> 511 : 0 | | 379*387f9dfdSAndroid Build Coastguard Worker 512 -> 1023 : 2 |****************************************| 380*387f9dfdSAndroid Build Coastguard Worker 381*387f9dfdSAndroid Build Coastguard Workerpid = 7024 382*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 383*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 384*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 385*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 386*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 4 |****************************************| 387*387f9dfdSAndroid Build Coastguard Worker 388*387f9dfdSAndroid Build Coastguard Workerpid = 16468 389*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 390*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 391*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 392*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 393*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 3 |****************************************| 394*387f9dfdSAndroid Build Coastguard Worker 395*387f9dfdSAndroid Build Coastguard Workerpid = 12922 396*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 397*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 1 |****************************************| 398*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 399*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 400*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 1 |****************************************| 401*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 1 |****************************************| 402*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 0 | | 403*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 1 |****************************************| 404*387f9dfdSAndroid Build Coastguard Worker 405*387f9dfdSAndroid Build Coastguard Workerpid = 12923 406*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 407*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 408*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 409*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 1 |******************** | 410*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 0 | | 411*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 0 | | 412*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 0 | | 413*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 2 |****************************************| 414*387f9dfdSAndroid Build Coastguard Worker 128 -> 255 : 0 | | 415*387f9dfdSAndroid Build Coastguard Worker 256 -> 511 : 0 | | 416*387f9dfdSAndroid Build Coastguard Worker 512 -> 1023 : 1 |******************** | 417*387f9dfdSAndroid Build Coastguard Worker 1024 -> 2047 : 1 |******************** | 418*387f9dfdSAndroid Build Coastguard Worker 419*387f9dfdSAndroid Build Coastguard Workerpid = 12924 420*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 421*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 422*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 423*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 2 |******************** | 424*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 4 |****************************************| 425*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 1 |********** | 426*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 0 | | 427*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 0 | | 428*387f9dfdSAndroid Build Coastguard Worker 128 -> 255 : 0 | | 429*387f9dfdSAndroid Build Coastguard Worker 256 -> 511 : 0 | | 430*387f9dfdSAndroid Build Coastguard Worker 512 -> 1023 : 0 | | 431*387f9dfdSAndroid Build Coastguard Worker 1024 -> 2047 : 1 |********** | 432*387f9dfdSAndroid Build Coastguard Worker 433*387f9dfdSAndroid Build Coastguard Workerpid = 12925 434*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 435*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 436*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 437*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 438*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 0 | | 439*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 0 | | 440*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 0 | | 441*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 1 |****************************************| 442*387f9dfdSAndroid Build Coastguard Worker 443*387f9dfdSAndroid Build Coastguard Workerpid = 12926 444*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 445*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 0 | | 446*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 1 |****************************************| 447*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 448*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 1 |****************************************| 449*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 0 | | 450*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 0 | | 451*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 0 | | 452*387f9dfdSAndroid Build Coastguard Worker 128 -> 255 : 0 | | 453*387f9dfdSAndroid Build Coastguard Worker 256 -> 511 : 0 | | 454*387f9dfdSAndroid Build Coastguard Worker 512 -> 1023 : 1 |****************************************| 455*387f9dfdSAndroid Build Coastguard Worker 456*387f9dfdSAndroid Build Coastguard Workerpid = 12927 457*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 458*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 1 |****************************************| 459*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 460*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 1 |****************************************| 461*387f9dfdSAndroid Build Coastguard Worker 462*387f9dfdSAndroid Build Coastguard Worker 463*387f9dfdSAndroid Build Coastguard WorkerA -L option will print a distribution for each TID: 464*387f9dfdSAndroid Build Coastguard Worker 465*387f9dfdSAndroid Build Coastguard Worker# ./runqlat -L 466*387f9dfdSAndroid Build Coastguard WorkerTracing run queue latency... Hit Ctrl-C to end. 467*387f9dfdSAndroid Build Coastguard Worker^C 468*387f9dfdSAndroid Build Coastguard Worker 469*387f9dfdSAndroid Build Coastguard Workertid = 0 470*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 471*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 593 |**************************** | 472*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 829 |****************************************| 473*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 300 |************** | 474*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 321 |*************** | 475*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 132 |****** | 476*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 58 |** | 477*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 0 | | 478*387f9dfdSAndroid Build Coastguard Worker 128 -> 255 : 0 | | 479*387f9dfdSAndroid Build Coastguard Worker 256 -> 511 : 13 | | 480*387f9dfdSAndroid Build Coastguard Worker 481*387f9dfdSAndroid Build Coastguard Workertid = 7 482*387f9dfdSAndroid Build Coastguard Worker usecs : count distribution 483*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 8 |******** | 484*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 19 |******************** | 485*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 37 |****************************************| 486*387f9dfdSAndroid Build Coastguard Worker[...] 487*387f9dfdSAndroid Build Coastguard Worker 488*387f9dfdSAndroid Build Coastguard Worker 489*387f9dfdSAndroid Build Coastguard WorkerAnd a --pidnss option (short for PID namespaces) will print for each PID 490*387f9dfdSAndroid Build Coastguard Workernamespace, for analyzing container performance: 491*387f9dfdSAndroid Build Coastguard Worker 492*387f9dfdSAndroid Build Coastguard Worker# ./runqlat --pidnss -m 493*387f9dfdSAndroid Build Coastguard WorkerTracing run queue latency... Hit Ctrl-C to end. 494*387f9dfdSAndroid Build Coastguard Worker^C 495*387f9dfdSAndroid Build Coastguard Worker 496*387f9dfdSAndroid Build Coastguard Workerpidns = 4026532870 497*387f9dfdSAndroid Build Coastguard Worker msecs : count distribution 498*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 40 |****************************************| 499*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 1 |* | 500*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 501*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 0 | | 502*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 0 | | 503*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 2 |** | 504*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 5 |***** | 505*387f9dfdSAndroid Build Coastguard Worker 506*387f9dfdSAndroid Build Coastguard Workerpidns = 4026532809 507*387f9dfdSAndroid Build Coastguard Worker msecs : count distribution 508*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 67 |****************************************| 509*387f9dfdSAndroid Build Coastguard Worker 510*387f9dfdSAndroid Build Coastguard Workerpidns = 4026532748 511*387f9dfdSAndroid Build Coastguard Worker msecs : count distribution 512*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 63 |****************************************| 513*387f9dfdSAndroid Build Coastguard Worker 514*387f9dfdSAndroid Build Coastguard Workerpidns = 4026532687 515*387f9dfdSAndroid Build Coastguard Worker msecs : count distribution 516*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 7 |****************************************| 517*387f9dfdSAndroid Build Coastguard Worker 518*387f9dfdSAndroid Build Coastguard Workerpidns = 4026532626 519*387f9dfdSAndroid Build Coastguard Worker msecs : count distribution 520*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 45 |****************************************| 521*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 0 | | 522*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 0 | | 523*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 0 | | 524*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 0 | | 525*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 0 | | 526*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 3 |** | 527*387f9dfdSAndroid Build Coastguard Worker 528*387f9dfdSAndroid Build Coastguard Workerpidns = 4026531836 529*387f9dfdSAndroid Build Coastguard Worker msecs : count distribution 530*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 314 |****************************************| 531*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 1 | | 532*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 11 |* | 533*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 28 |*** | 534*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 137 |***************** | 535*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 86 |********** | 536*387f9dfdSAndroid Build Coastguard Worker 64 -> 127 : 1 | | 537*387f9dfdSAndroid Build Coastguard Worker 538*387f9dfdSAndroid Build Coastguard Workerpidns = 4026532382 539*387f9dfdSAndroid Build Coastguard Worker msecs : count distribution 540*387f9dfdSAndroid Build Coastguard Worker 0 -> 1 : 285 |****************************************| 541*387f9dfdSAndroid Build Coastguard Worker 2 -> 3 : 5 | | 542*387f9dfdSAndroid Build Coastguard Worker 4 -> 7 : 16 |** | 543*387f9dfdSAndroid Build Coastguard Worker 8 -> 15 : 9 |* | 544*387f9dfdSAndroid Build Coastguard Worker 16 -> 31 : 69 |********* | 545*387f9dfdSAndroid Build Coastguard Worker 32 -> 63 : 25 |*** | 546*387f9dfdSAndroid Build Coastguard Worker 547*387f9dfdSAndroid Build Coastguard WorkerMany of these distributions have two modes: the second, in this case, is 548*387f9dfdSAndroid Build Coastguard Workercaused by capping CPU usage via CPU shares. 549*387f9dfdSAndroid Build Coastguard Worker 550*387f9dfdSAndroid Build Coastguard Worker 551*387f9dfdSAndroid Build Coastguard WorkerUSAGE message: 552*387f9dfdSAndroid Build Coastguard Worker 553*387f9dfdSAndroid Build Coastguard Worker# ./runqlat -h 554*387f9dfdSAndroid Build Coastguard Workerusage: runqlat.py [-h] [-T] [-m] [-P] [--pidnss] [-L] [-p PID] 555*387f9dfdSAndroid Build Coastguard Worker [interval] [count] 556*387f9dfdSAndroid Build Coastguard Worker 557*387f9dfdSAndroid Build Coastguard WorkerSummarize run queue (scheduler) latency as a histogram 558*387f9dfdSAndroid Build Coastguard Worker 559*387f9dfdSAndroid Build Coastguard Workerpositional arguments: 560*387f9dfdSAndroid Build Coastguard Worker interval output interval, in seconds 561*387f9dfdSAndroid Build Coastguard Worker count number of outputs 562*387f9dfdSAndroid Build Coastguard Worker 563*387f9dfdSAndroid Build Coastguard Workeroptional arguments: 564*387f9dfdSAndroid Build Coastguard Worker -h, --help show this help message and exit 565*387f9dfdSAndroid Build Coastguard Worker -T, --timestamp include timestamp on output 566*387f9dfdSAndroid Build Coastguard Worker -m, --milliseconds millisecond histogram 567*387f9dfdSAndroid Build Coastguard Worker -P, --pids print a histogram per process ID 568*387f9dfdSAndroid Build Coastguard Worker --pidnss print a histogram per PID namespace 569*387f9dfdSAndroid Build Coastguard Worker -L, --tids print a histogram per thread ID 570*387f9dfdSAndroid Build Coastguard Worker -p PID, --pid PID trace this PID only 571*387f9dfdSAndroid Build Coastguard Worker 572*387f9dfdSAndroid Build Coastguard Workerexamples: 573*387f9dfdSAndroid Build Coastguard Worker ./runqlat # summarize run queue latency as a histogram 574*387f9dfdSAndroid Build Coastguard Worker ./runqlat 1 10 # print 1 second summaries, 10 times 575*387f9dfdSAndroid Build Coastguard Worker ./runqlat -mT 1 # 1s summaries, milliseconds, and timestamps 576*387f9dfdSAndroid Build Coastguard Worker ./runqlat -P # show each PID separately 577*387f9dfdSAndroid Build Coastguard Worker ./runqlat -p 185 # trace PID 185 only 578