• Arnaldo Carvalho de Melo's avatar
    perf trace: Disable events and drain events when forked workload ends · 02ac5421
    Arnaldo Carvalho de Melo authored
    We were not checking in the inner event processing loop if the forked workload
    had finished, which, on a busy system, may make it take a long time trying to
    drain events, entering a seemingly neverending loop, waiting for the system to
    get idle enough to make it drain the buffers.
    
    Fix it by disabling the events when 'done' is true, in the inner loop, to start
    draining what is in the buffers.
    
    Now:
    
    [root@ssdandy ~]# time trace --filter-pids 14003 -a sleep 1 | tail
      996.748 ( 0.002 ms): sh/30296 rt_sigprocmask(how: SETMASK, nset: 0x7ffc83418160, sigsetsize: 8) = 0
      996.751 ( 0.002 ms): sh/30296 rt_sigprocmask(how: BLOCK, nset: 0x7ffc834181f0, oset: 0x7ffc83418270, sigsetsize: 8) = 0
      996.755 ( 0.002 ms): sh/30296 rt_sigaction(sig: INT, act: 0x7ffc83417f50, oact: 0x7ffc83417ff0, sigsetsize: 8) = 0
     1004.543 ( 0.362 ms): tail/30198  ... [continued]: read()) = 4096
     1004.548 ( 7.791 ms): sh/30296 wait4(upid: -1, stat_addr: 0x7ffc834181a0) ...
     1004.975 ( 0.427 ms): tail/30198 read(buf: 0x7633f0, count: 8192) = 4096
     1005.390 ( 0.410 ms): tail/30198 read(buf: 0x765410, count: 8192) = 4096
     1005.743 ( 0.348 ms): tail/30198 read(buf: 0x7633f0, count: 8192) = 4096
     1006.197 ( 0.449 ms): tail/30198 read(buf: 0x765410, count: 8192) = 4096
     1006.492 ( 0.290 ms): tail/30198 read(buf: 0x7633f0, count: 8192) = 4096
    
    real	0m1.219s
    user	0m0.704s
    sys	0m0.331s
    [root@ssdandy ~]#
    Reported-by: default avatarMichael Petlan <mpetlan@redhat.com>
    Suggested-by: default avatarJiri Olsa <jolsa@redhat.com>
    Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Don Zickus <dzickus@redhat.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lkml.kernel.org/n/tip-p6kpn1b26qcbe47pufpw0tex@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    02ac5421
builtin-trace.c 74.4 KB