• Alexander Yarygin's avatar
    perf session: Add option to copy events when queueing · 54bf53b1
    Alexander Yarygin authored
    When processing events the session code has an ordered samples queue
    which is used to time-sort events coming in across multiple mmaps. At a
    later point in time samples on the queue are flushed up to some
    timestamp at which point the event is actually processed.
    
    When analyzing events live (ie., record/analysis path in the same
    command) there is a race that leads to corrupted events and parse errors
    which cause perf to terminate. The problem is that when the event is
    placed in the ordered samples queue it is only a reference to the event
    which is really sitting in the mmap buffer. Even though the event is
    queued for later processing the mmap tail pointer is updated which
    indicates to the kernel that the event has been processed. The race is
    flushing the event from the queue before it gets overwritten by some
    other event. For commands trying to process events live (versus just
    writing to a file) and processing a high rate of events this leads to
    parse failures and perf terminates.
    
    Examples hitting this problem are 'perf kvm stat live', especially with
    nested VMs which generate 100,000+ traces per second, and a command
    processing scheduling events with a high rate of context switching --
    e.g., running 'perf bench sched pipe'.
    
    This patch offers live commands an option to copy the event when it is
    placed in the ordered samples queue.
    
    Based on a patch from David Ahern <dsahern@gmail.com>
    Signed-off-by: default avatarAlexander Yarygin <yarygin@linux.vnet.ibm.com>
    Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Christian Borntraeger <borntraeger@de.ibm.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Namhyung Kim <namhyung.kim@lge.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lkml.kernel.org/r/1412347212-28237-2-git-send-email-yarygin@linux.vnet.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    54bf53b1
session.c 40.7 KB