From 7e6e3a9d01143d21fcc5190c742517da1dea44fb Mon Sep 17 00:00:00 2001 From: Douglas Raillard Date: Tue, 1 Apr 2025 11:07:13 +0100 Subject: [PATCH 1/2] lisa.analysis.tasks: Replace task_rename pid field with __pid FIX The task_rename event has lost its "pid" field since that commit: https://lkml.org/lkml/2024/11/8/665 Therefore, use the __pid column instead as recommended in the commit message. --- lisa/analysis/tasks.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lisa/analysis/tasks.py b/lisa/analysis/tasks.py index 7678cbfa0..6ae338146 100644 --- a/lisa/analysis/tasks.py +++ b/lisa/analysis/tasks.py @@ -298,8 +298,10 @@ class TasksAnalysis(TraceAnalysisBase): except MissingTraceEventError as e: missing.append(e.missing_events) - load('task_rename', 'oldcomm', 'pid') - load('task_rename', 'newcomm', 'pid') + # The "pid" field of task_rename has disappeared since: + # https://lkml.org/lkml/2024/11/8/665 + load('task_rename', 'oldcomm', '__pid') + load('task_rename', 'newcomm', '__pid') load('sched_switch', 'prev_comm', 'prev_pid') load('sched_switch', 'next_comm', 'next_pid') @@ -670,7 +672,7 @@ class TasksAnalysis(TraceAnalysisBase): SignalDesc('sched_switch', ['next_pid', 'next_comm']), SignalDesc('sched_wakeup', ['pid', 'comm']), SignalDesc('sched_wakeup_new', ['pid', 'comm']), - SignalDesc('task_rename', ['pid']), + SignalDesc('task_rename', ['__pid']), ], compress_signals_init=True, events=[ @@ -732,6 +734,7 @@ class TasksAnalysis(TraceAnalysisBase): if add_rename: rename_df = get_df('task_rename').rename({ 'oldcomm': 'comm', + '__pid': 'pid', }) rename_df = rename_df.select(['Time', 'pid', 'comm']) rename_df = rename_df.with_columns( -- GitLab From 0ece7c46b0c3b09663bec5802753b0c8e7bdbb4d Mon Sep 17 00:00:00 2001 From: Douglas Raillard Date: Tue, 1 Apr 2025 11:08:31 +0100 Subject: [PATCH 2/2] lisa.analysis.tasks: Remove useless casts in TasksAnalysis._df_tasks_states --- lisa/analysis/tasks.py | 30 +++++------------------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/lisa/analysis/tasks.py b/lisa/analysis/tasks.py index 6ae338146..f6481763f 100644 --- a/lisa/analysis/tasks.py +++ b/lisa/analysis/tasks.py @@ -648,11 +648,6 @@ class TasksAnalysis(TraceAnalysisBase): ###################################################### # A) Assemble the sched_switch and sched_wakeup events ###################################################### - dtypes = dict( - state=pl.Int64, - comm=pl.Categorical, - ) - def filters_comm(task): try: return task.comm is not None @@ -660,7 +655,7 @@ class TasksAnalysis(TraceAnalysisBase): return isinstance(task, str) def state(value): - return pl.lit(value, dtypes['state']) + return pl.lit(value, pl.Int64) # Add the rename events if we are interested in the comm of tasks add_rename = any(map(filters_comm, tasks or [])) @@ -683,26 +678,11 @@ class TasksAnalysis(TraceAnalysisBase): ] ) - def get_df(event): - df = trace.df_event(event) - if event == 'sched_switch': - df = df.with_columns( - pl.col('prev_state').cast(dtypes['state']), - pl.col('prev_comm').cast(dtypes['comm']), - pl.col('next_comm').cast(dtypes['comm']), - ) - elif event in ('sched_wakeup', 'sched_wakeup_new'): - df = df.with_columns( - pl.col('comm').cast(dtypes['comm']), - ) - - return df - - wk_df = get_df('sched_wakeup') - sw_df = get_df('sched_switch') + wk_df = trace.df_event('sched_wakeup') + sw_df = trace.df_event('sched_switch') try: - wkn_df = get_df('sched_wakeup_new') + wkn_df = trace.df_event('sched_wakeup_new') except MissingTraceEventError: pass else: @@ -732,7 +712,7 @@ class TasksAnalysis(TraceAnalysisBase): all_sw_df = pl.concat([prev_sw_df, next_sw_df], how='diagonal_relaxed') if add_rename: - rename_df = get_df('task_rename').rename({ + rename_df = trace.df_event('task_rename').rename({ 'oldcomm': 'comm', '__pid': 'pid', }) -- GitLab