cpudist: Protect against potentially negative time deltas
authorSasha Goldshtein <goldshtn@gmail.com>
Thu, 30 Jun 2016 17:46:27 +0000 (10:46 -0700)
committerSasha Goldshtein <goldshtn@gmail.com>
Thu, 30 Jun 2016 17:46:27 +0000 (10:46 -0700)
It seems from experimentation that the calculated timestamps between
on- and off-CPU switch events can produce incorrect results, with a
later event having a smaller timestamp. Discard events when the
resulting delta time would be negative.

tools/cpudist.py

index 6a0e04b..40ccfa0 100755 (executable)
@@ -82,6 +82,11 @@ static inline void update_hist(u32 tgid, u32 pid, u64 ts)
     if (tsp == 0)
         return;
 
+    if (ts < *tsp) {
+        // Probably a clock issue where the recorded on-CPU event had a
+        // timestamp later than the recorded off-CPU event, or vice versa.
+        return;
+    }
     u64 delta = ts - *tsp;
     FACTOR
     STORE