1*387f9dfdSAndroid Build Coastguard WorkerDemonstrations of drsnoop, the Linux BPF CO-RE version. 2*387f9dfdSAndroid Build Coastguard Worker 3*387f9dfdSAndroid Build Coastguard Worker 4*387f9dfdSAndroid Build Coastguard Workerdrsnoop traces the direct reclaim system-wide, and prints various details. 5*387f9dfdSAndroid Build Coastguard WorkerExample output: 6*387f9dfdSAndroid Build Coastguard Worker 7*387f9dfdSAndroid Build Coastguard Worker# drsnoop 8*387f9dfdSAndroid Build Coastguard Worker 9*387f9dfdSAndroid Build Coastguard WorkerTracing direct reclaim events... Hit Ctrl-C to end. 10*387f9dfdSAndroid Build Coastguard WorkerTIME COMM TID LAT(ms) PAGES 11*387f9dfdSAndroid Build Coastguard Worker14:56:43 in:imklog 268 106.637 39 12*387f9dfdSAndroid Build Coastguard Worker14:56:43 systemd-udevd 232 110.708 53 13*387f9dfdSAndroid Build Coastguard Worker14:56:43 systemd-journal 19531 106.083 62 14*387f9dfdSAndroid Build Coastguard Worker^C 15*387f9dfdSAndroid Build Coastguard Worker 16*387f9dfdSAndroid Build Coastguard WorkerWhile tracing, the processes alloc pages due to insufficient memory available 17*387f9dfdSAndroid Build Coastguard Workerin the system, direct reclaim events happened, which will increase the waiting 18*387f9dfdSAndroid Build Coastguard Workerdelay of the processes. 19*387f9dfdSAndroid Build Coastguard Worker 20*387f9dfdSAndroid Build Coastguard Workerdrsnoop can be useful for discovering when allocstall(/proc/vmstat) continues 21*387f9dfdSAndroid Build Coastguard Workerto increase, whether it is caused by some critical processes or not. 22*387f9dfdSAndroid Build Coastguard Worker 23*387f9dfdSAndroid Build Coastguard WorkerThe -p option can be used to filter on a PID, which is filtered in-kernel. 24*387f9dfdSAndroid Build Coastguard Worker 25*387f9dfdSAndroid Build Coastguard Worker# drsnoop -p 17491 26*387f9dfdSAndroid Build Coastguard Worker 27*387f9dfdSAndroid Build Coastguard WorkerTracing direct reclaim events... Hit Ctrl-C to end. 28*387f9dfdSAndroid Build Coastguard WorkerTIME COMM TID LAT(ms) PAGES 29*387f9dfdSAndroid Build Coastguard Worker14:59:56 summond 17491 0.24 50 30*387f9dfdSAndroid Build Coastguard Worker14:59:56 summond 17491 0.26 38 31*387f9dfdSAndroid Build Coastguard Worker14:59:56 summond 17491 0.36 72 32*387f9dfdSAndroid Build Coastguard Worker^C 33*387f9dfdSAndroid Build Coastguard Worker 34*387f9dfdSAndroid Build Coastguard WorkerThis shows the summond process allocs pages, and direct reclaim events happening, 35*387f9dfdSAndroid Build Coastguard Workerand the delays are not affected much. 36*387f9dfdSAndroid Build Coastguard Worker 37*387f9dfdSAndroid Build Coastguard WorkerA maximum tracing duration can be set with the -d option. For example, to trace 38*387f9dfdSAndroid Build Coastguard Workerfor 2 seconds: 39*387f9dfdSAndroid Build Coastguard Worker 40*387f9dfdSAndroid Build Coastguard Worker# drsnoop -d 2 41*387f9dfdSAndroid Build Coastguard Worker 42*387f9dfdSAndroid Build Coastguard WorkerTracing direct reclaim events for 2 secs. 43*387f9dfdSAndroid Build Coastguard WorkerTIME COMM TID LAT(ms) PAGES 44*387f9dfdSAndroid Build Coastguard Worker15:02:16 head 21715 0.15 195 45*387f9dfdSAndroid Build Coastguard Worker 46*387f9dfdSAndroid Build Coastguard WorkerUSAGE message: 47*387f9dfdSAndroid Build Coastguard Worker 48*387f9dfdSAndroid Build Coastguard Worker# drsnoop --help 49*387f9dfdSAndroid Build Coastguard Worker 50*387f9dfdSAndroid Build Coastguard WorkerUsage: drsnoop [OPTION...] 51*387f9dfdSAndroid Build Coastguard WorkerTrace direct reclaim latency. 52*387f9dfdSAndroid Build Coastguard Worker 53*387f9dfdSAndroid Build Coastguard WorkerUSAGE: drsnoop [--help] [-p PID] [-t TID] [-d DURATION] [-e] 54*387f9dfdSAndroid Build Coastguard Worker 55*387f9dfdSAndroid Build Coastguard WorkerEXAMPLES: 56*387f9dfdSAndroid Build Coastguard Worker drsnoop # trace all direct reclaim events 57*387f9dfdSAndroid Build Coastguard Worker drsnoop -p 123 # trace pid 123 58*387f9dfdSAndroid Build Coastguard Worker drsnoop -t 123 # trace tid 123 (use for threads only) 59*387f9dfdSAndroid Build Coastguard Worker drsnoop -d 10 # trace for 10 seconds only 60*387f9dfdSAndroid Build Coastguard Worker drsnoop -e # trace all direct reclaim events with extended faileds 61*387f9dfdSAndroid Build Coastguard Worker 62*387f9dfdSAndroid Build Coastguard Worker -d, --duration=DURATION Total duration of trace in seconds 63*387f9dfdSAndroid Build Coastguard Worker -e, --extended Extended fields output 64*387f9dfdSAndroid Build Coastguard Worker -p, --pid=PID Process PID to trace 65*387f9dfdSAndroid Build Coastguard Worker -t, --tid=TID Thread TID to trace 66*387f9dfdSAndroid Build Coastguard Worker -v, --verbose Verbose debug output 67*387f9dfdSAndroid Build Coastguard Worker -?, --help Give this help list 68*387f9dfdSAndroid Build Coastguard Worker --usage Give a short usage message 69*387f9dfdSAndroid Build Coastguard Worker -V, --version Print program version 70*387f9dfdSAndroid Build Coastguard Worker 71*387f9dfdSAndroid Build Coastguard WorkerReport bugs to <[email protected]>. 72