]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
perf, sched migration: Handle ignored migrate out events
authorFrederic Weisbecker <fweisbec@gmail.com>
Wed, 21 Jul 2010 20:45:51 +0000 (22:45 +0200)
committerFrederic Weisbecker <fweisbec@gmail.com>
Sun, 1 Aug 2010 23:31:53 +0000 (01:31 +0200)
Migrate out events may happen on tasks that are not in the
runqueue, for example this is the case for tasks that are
sleeping. In this case, we don't want to log the migrate out
event in the source runqueue because the task is not eventually
in the runqueue and we have already logged its sleep event.

This fixes timeslices that spuriously propagate a sleep event
from the previous timeslice.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Nikhil Rao <ncrao@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
tools/perf/scripts/python/sched-migration.py

index f73e1c736a34856b42f1391f4b0b57c906d07300..7304d86c76c0fab5cdc797e14caeabb71f230ce1 100644 (file)
@@ -435,7 +435,10 @@ class TimeSlice:
                self.__update_total_load(new_rq, in_rq)
 
                ts_list.append(self)
-               self.event_cpus = [old_cpu, new_cpu]
+
+               if old_rq is not out_rq:
+                       self.event_cpus.append(old_cpu)
+               self.event_cpus.append(new_cpu)
 
        def wake_up(self, ts_list, pid, cpu, fork):
                old_rq = self.prev.rqs[cpu]