perf record: No need to check for overwrites
authorArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 28 Jan 2011 16:49:19 +0000 (14:49 -0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Sat, 29 Jan 2011 18:23:58 +0000 (16:23 -0200)
As we open the mmap with (PROT_READ | PROT_WRITE), signalling the kernel
with perf_mmap__write_tail() when consuming data, so the kernel will not
overwrite.

Suggested-by: Peter Zijlstra <peterz@infradead.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-record.c

index d788630..caf9279 100644 (file)
@@ -115,27 +115,11 @@ static void mmap_read(struct perf_mmap *md)
        unsigned char *data = md->base + page_size;
        unsigned long size;
        void *buf;
-       int diff;
 
-       /*
-        * If we're further behind than half the buffer, there's a chance
-        * the writer will bite our tail and mess up the samples under us.
-        *
-        * If we somehow ended up ahead of the head, we got messed up.
-        *
-        * In either case, truncate and restart at head.
-        */
-       diff = head - old;
-       if (diff < 0) {
-               fprintf(stderr, "WARNING: failed to keep up with mmap data\n");
-               /*
-                * head points to a known good entry, start there.
-                */
-               old = head;
-       }
+       if (old == head)
+               return;
 
-       if (old != head)
-               samples++;
+       samples++;
 
        size = head - old;