perf: Fix wakeup storm for RO mmap()s
RO mmap()s don't update the tail pointer, so comparing against it for determining the written data size doesn't really do any good. Keep track of when we last did a wakeup, and compare against that. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Mike Galbraith <efault@gmx.de> Cc: Steven Rostedt <rostedt@goodmis.org> LKML-Reference: <20100521090710.684479310@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
committed by
Ingo Molnar
parent
0e2e63dd60
commit
adb8e118f2
@ -3056,8 +3056,8 @@ int perf_output_begin(struct perf_output_handle *handle,
|
||||
handle->offset = offset;
|
||||
handle->head = head;
|
||||
|
||||
if (head - tail > data->watermark)
|
||||
local_inc(&data->wakeup);
|
||||
if (head - local_read(&data->wakeup) > data->watermark)
|
||||
local_add(data->watermark, &data->wakeup);
|
||||
|
||||
if (have_lost) {
|
||||
lost_event.header.type = PERF_RECORD_LOST;
|
||||
|
Reference in New Issue
Block a user