diff options
author | Pierre Tardy <pierre.tardy@intel.com> | 2010-12-01 01:30:31 +0100 |
---|---|---|
committer | Pierre Tardy <pierre.tardy@intel.com> | 2010-12-01 01:33:31 +0100 |
commit | 5ca9c6cb0d382832006703fff1416e0cbd7300aa (patch) | |
tree | 0d552f88d24e849b553ed14572fa9e00ac8cd825 | |
parent | 4432783dd5b26ece6ecdcc9736f711eb3014bec2 (diff) |
menu_select plugin
useful to see what the menu governor is predicting
Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
-rw-r--r-- | timechart/plugins/menu_select.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/timechart/plugins/menu_select.py b/timechart/plugins/menu_select.py new file mode 100644 index 0000000..c9f58fd --- /dev/null +++ b/timechart/plugins/menu_select.py @@ -0,0 +1,54 @@ +from timechart.plugin import * +from timechart import colors +from timechart.model import tcProcess + +class menu_select(plugin): + additional_colors = """ +menu_select_bg #e5bebe +menu_select #ee0000 +""" + additional_ftrace_parsers = [ + ( 'menu_select', 'expected:%d predicted %d state:%s %d','expected','predicted','next_state','num_state'), + ] + additional_process_types = { + "menu_select":(tcProcess, POWER_CLASS), + } + @staticmethod + def do_event_menu_select(proj,event): + found = 0 + i = 0 + while not found: + p = proj.generic_find_process(0,"menu_select_cpu%d_%d_predicted"%(event.common_cpu,i),"menu_select") + p2 = proj.generic_find_process(0,"menu_select_cpu%d_%d_expected"%(event.common_cpu,i),"menu_select") + if len(p['end_ts'])>0 and len(p2['end_ts'])>0 and (p['end_ts'][-1]>event.timestamp or p2['end_ts'][-1]>event.timestamp): + i+=1 + continue + found = 1 + p['start_ts'].append(int(event.timestamp)) + p['end_ts'].append(int(event.timestamp+event.predicted)) + p['types'].append(colors.get_color_id("menu_select")) + p['cpus'].append(event.common_cpu) + p['linenumbers'].append(event.linenumber) + + p = p2 + p['start_ts'].append(int(event.timestamp)) + p['end_ts'].append(int(event.timestamp+event.expected)) + p['types'].append(colors.get_color_id("menu_select")) + p['cpus'].append(event.common_cpu) + p['linenumbers'].append(event.linenumber) +plugin_register(menu_select) + +menu_select_patch=""" +diff --git a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c +index 1b12870..4b18893 100644 +--- a/drivers/cpuidle/governors/menu.c ++++ b/drivers/cpuidle/governors/menu.c +@@ -292,6 +292,7 @@ static int menu_select(struct cpuidle_device *dev) + data->exit_us = s->exit_latency; + data->last_state_idx = i; + } ++ trace_printk("expected:%u predicted %llu state:%s %d\n",data->expected_us, data->predicted_us, dev->states[data->last_state_idx].name, dev->state_count); + + return data->last_state_idx; + } +""" |