]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
perf sched timehist: decode process names of processes in zombie state
authorAnubhav Shelat <ashelat@redhat.com>
Wed, 16 Jul 2025 20:39:15 +0000 (16:39 -0400)
committerNamhyung Kim <namhyung@kernel.org>
Fri, 18 Jul 2025 00:05:07 +0000 (17:05 -0700)
Previously when running perf trace timehist --state, when recording
processes in the zombie state the process name would not be decoded
properly and appears with just the PID:

1140057.412177 [0006]  Mutter Input Th[3139/3104]          0.956      0.019      0.041      S
1140057.412222 [0012]  :1248612[1248612]                   0.000      0.000      0.332      Z
1140057.412275 [0004]  <idle>                              0.052      0.052      0.953      I
1140057.412284 [0008]  <idle>                              0.070      0.070      0.932      I
1140057.412333 [0004]  KMS thread[3126/3104]               0.953      0.112      0.058      S

Now some extra processing has been added to decode the process name:

1140057.412177 [0006]  Mutter Input Th[3139/3104]          0.956      0.019      0.041      S
1140057.412222 [0012]  sleep[1248612]                      0.000      0.000      0.332      Z
1140057.412275 [0004]  <idle>                              0.052      0.052      0.953      I
1140057.412284 [0008]  <idle>                              0.070      0.070      0.932      I
1140057.412333 [0004]  KMS thread[3126/3104]               0.953      0.112      0.058      S

Signed-off-by: Anubhav Shelat <ashelat@redhat.com>
Link: https://lore.kernel.org/r/20250716203914.45772-2-ashelat@redhat.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/builtin-sched.c

index 4bbebd6ef2e4a7911c5e47560375b925131b8bdc..34051ad2349302d65566f441ef152286275770ba 100644 (file)
@@ -2201,6 +2201,11 @@ static void timehist_print_sample(struct perf_sched *sched,
                printf(" ");
        }
 
+       if (!thread__comm_set(thread)) {
+                const char *prev_comm = evsel__strval(evsel, sample, "prev_comm");
+                thread__set_comm(thread, prev_comm, sample->time);
+        }
+
        printf(" %-*s ", comm_width, timehist_get_commstr(thread));
 
        if (sched->show_prio)