tools/offcputime Filter out negative offcpu duration
authorYuto Kawamura <kawamuray.dadada@gmail.com>
Thu, 14 Jan 2021 12:14:12 +0000 (21:14 +0900)
committeryonghong-song <ys114321@gmail.com>
Fri, 15 Jan 2021 19:08:15 +0000 (11:08 -0800)
tools/offcputime.py

index 068c70764f67c8e7e07e262f3555dd23c7edaae9..c1bf79c0d13bd90de67343205dcdb3d2158e8e65 100755 (executable)
@@ -146,8 +146,13 @@ int oncpu(struct pt_regs *ctx, struct task_struct *prev) {
     }
 
     // calculate current thread's delta time
-    u64 delta = bpf_ktime_get_ns() - *tsp;
+    u64 t_start = *tsp;
+    u64 t_end = bpf_ktime_get_ns();
     start.delete(&pid);
+    if (t_start > t_end) {
+        return 0;
+    }
+    u64 delta = t_end - t_start;
     delta = delta / 1000;
     if ((delta < MINBLOCK_US) || (delta > MAXBLOCK_US)) {
         return 0;