Arnaldo Carvalho de Melo
899e5ffbf2
perf record: Introduce --switch-output-event
Now we can use it with --overwrite to have a flight recorder mode that
gets snapshot requests from arbitrary events that are processed in the
side band thread together with the PERF_RECORD_BPF_EVENT processing.
Example:
To collect scheduler events until a recvmmsg syscall happens, system
wide:
[root@five a]# rm -f perf.data.2020042717*
[root@five a]# perf record --overwrite -e sched:*switch,syscalls:*recvmmsg --switch-output-event syscalls:sys_enter_recvmmsg
[ perf record: dump data: Woken up 1 times ]
[ perf record: Dump perf.data.2020042717585458 ]
[ perf record: dump data: Woken up 1 times ]
[ perf record: Dump perf.data.2020042717590235 ]
[ perf record: dump data: Woken up 1 times ]
[ perf record: Dump perf.data.2020042717590398 ]
^C[ perf record: Woken up 1 times to write data ]
[ perf record: Dump perf.data.2020042717590511 ]
[ perf record: Captured and wrote 7.244 MB perf.data.<timestamp> ]
So in the above case we had 3 snapshots, the fourth was forced by
control+C:
[root@five a]# ls -la
total 20440
drwxr-xr-x. 2 root root 4096 Apr 27 17:59 .
dr-xr-x---. 12 root root 4096 Apr 27 17:46 ..
-rw-------. 1 root root 3936125 Apr 27 17:58 perf.data.2020042717585458
-rw-------. 1 root root 5074869 Apr 27 17:59 perf.data.2020042717590235
-rw-------. 1 root root 4291037 Apr 27 17:59 perf.data.2020042717590398
-rw-------. 1 root root 7617037 Apr 27 17:59 perf.data.2020042717590511
[root@five a]#
One can make this more precise by adding the switch output event to the
main -e events list, as since this is done asynchronously, a few events
after the signal event will appear in the snapshots, as can be seen
with:
[root@five a]# rm -f perf.data.20200427175*
[root@five a]# perf record --overwrite -e sched:*switch,syscalls:*recvmmsg --switch-output-event syscalls:sys_enter_recvmmsg
[ perf record: dump data: Woken up 1 times ]
[ perf record: Dump perf.data.2020042718024203 ]
[ perf record: dump data: Woken up 1 times ]
[ perf record: Dump perf.data.2020042718024301 ]
[ perf record: dump data: Woken up 1 times ]
[ perf record: Dump perf.data.2020042718024484 ]
^C[ perf record: Woken up 1 times to write data ]
[ perf record: Dump perf.data.2020042718024562 ]
[ perf record: Captured and wrote 7.337 MB perf.data.<timestamp> ]
[root@five a]# perf script -i perf.data.2020042718024203 | tail -15
PacerThread 148586 [005] 122.830729: sched:sched_switch: prev_comm=PacerThread prev_pid=148586...
swapper 0 [000] 122.833588: sched:sched_switch: prev_comm=swapper/0 prev_pid=...
NetworkManager 1251 [000] 122.833619: syscalls:sys_enter_recvmmsg: fd: 0x0000001c, mmsg: 0x7ffe83054a1...
swapper 0 [002] 122.833624: sched:sched_switch: prev_comm=swapper/2 prev_pid=...
swapper 0 [003] 122.833624: sched:sched_switch: prev_comm=swapper/3 prev_pid=...
NetworkManager 1251 [000] 122.833626: syscalls:sys_exit_recvmmsg: 0x1
kworker/3:3-eve 158946 [003] 122.833628: sched:sched_switch: prev_comm=kworker/3:3 prev_pid=15894...
swapper 0 [004] 122.833641: sched:sched_switch: prev_comm=swapper/4 prev_pid=...
NetworkManager 1251 [000] 122.833642: sched:sched_switch: prev_comm=NetworkManage...
perf 228273 [002] 122.833645: sched:sched_switch: prev_comm=perf prev_pid=22827...
swapper 0 [011] 122.833646: sched:sched_switch: prev_comm=swapper/1...
swapper 0 [002] 122.833648: sched:sched_switch: prev_comm=swapper/...
kworker/0:2-eve 207387 [000] 122.833648: sched:sched_switch: prev_comm=kworker/0:2 prev_pid=20738...
kworker/2:3-eve 232038 [002] 122.833652: sched:sched_switch: prev_comm=kworker/2:3 prev_pid=23203...
perf 235825 [003] 122.833653: sched:sched_switch: prev_comm=perf prev_pid=23582...
[root@five a]#
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Song Liu <songliubraving@fb.com>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lore.kernel.org/lkml/20200429131106.27974-8-acme@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2020-05-05 16:35:29 -03:00
..
2016-07-04 20:27:27 -03:00
2019-09-27 09:26:14 -03:00
2018-04-26 13:47:10 -03:00
2018-10-24 15:29:50 -03:00
2019-03-19 16:52:04 -03:00
2015-04-29 10:38:06 -03:00
2019-06-05 09:47:57 -03:00
2013-07-08 17:37:25 -03:00
2015-08-21 11:34:10 -03:00
2020-03-11 11:00:33 -03:00
2020-04-16 12:19:15 -03:00
2012-08-13 14:55:02 -03:00
2019-09-30 17:29:51 -03:00
2020-04-18 09:05:00 -03:00
2009-06-06 20:33:43 +02:00
2009-06-06 20:33:43 +02:00
2009-06-06 20:33:43 +02:00
2009-06-06 20:33:43 +02:00
2009-06-06 20:33:43 +02:00
2020-01-14 12:02:19 -03:00
2013-12-09 15:21:45 -03:00
2020-04-16 12:19:12 -03:00
2018-04-26 09:30:26 -03:00
2011-12-23 17:01:03 -02:00
2020-04-18 09:05:01 -03:00
2020-03-25 16:13:21 -03:00
2018-03-07 10:26:32 -03:00
2019-10-11 10:57:00 -03:00
2017-11-16 14:50:07 -03:00
2018-03-07 10:26:32 -03:00
2009-06-06 20:33:43 +02:00
2020-03-11 11:00:09 -03:00
2020-03-11 11:00:09 -03:00
2018-03-07 10:26:32 -03:00
2018-02-16 14:55:42 -03:00
2019-12-02 15:38:59 -03:00
2020-04-18 09:05:00 -03:00
2017-11-16 14:50:04 -03:00
2019-02-04 11:32:14 -03:00
2019-05-25 23:04:42 -04:00
2020-05-05 16:35:29 -03:00
2020-04-18 09:05:01 -03:00
2020-01-06 11:46:09 -03:00
2018-03-07 10:26:32 -03:00
2018-06-06 15:40:10 -03:00
2020-04-18 09:05:01 -03:00
2020-04-23 11:03:46 -03:00
2016-06-30 18:27:45 -03:00
2017-11-16 14:50:06 -03:00
2020-04-18 09:05:01 -03:00
2019-10-15 13:03:49 -03:00
2018-04-02 13:52:23 -03:00
2019-11-06 15:43:05 -03:00
2020-04-18 09:05:00 -03:00
2019-11-12 08:32:27 -03:00
2016-09-01 09:44:13 -03:00
2019-07-02 16:08:16 -03:00