diff --git a/lisa/analysis/tasks.py b/lisa/analysis/tasks.py index 7678cbfa0ae059df4f65caff9ae71d21c430e0ee..f6481763f0a53f5bc7be72bfdf26783a845313ae 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') @@ -646,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 @@ -658,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 [])) @@ -670,7 +667,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=[ @@ -681,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: @@ -730,8 +712,9 @@ 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', }) rename_df = rename_df.select(['Time', 'pid', 'comm']) rename_df = rename_df.with_columns(