aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Tardy <tardyp@gmail.com>2011-02-28 16:26:20 +0100
committerPierre Tardy <tardyp@gmail.com>2011-02-28 16:26:20 +0100
commitd1361e05977f70f815ff4807c754c181b1c47086 (patch)
tree2c12fdd6eac5f032aed3f43d37429ba1549a7557
parent14eff59829a593b2e58666ca9d349d9c95e91df7 (diff)
cpuidle: move legacy cpuidle support to plugin
This adds more consistency cpuidle is still handled a bit too much as a special case. Signed-off-by: Pierre Tardy <tardyp@gmail.com>
-rw-r--r--timechart/colors.py9
-rw-r--r--timechart/model.py33
-rw-r--r--timechart/plugins/cpuidle.py47
3 files changed, 46 insertions, 43 deletions
diff --git a/timechart/colors.py b/timechart/colors.py
index e41a226..c8cb7f8 100644
--- a/timechart/colors.py
+++ b/timechart/colors.py
@@ -14,15 +14,6 @@ event_bg
kernel_process_bg #F0F5A3
user_process_bg #E1DFFF
selected_bg #ACD7E6
-C0 #000000
-C1 #bbbbff
-C2 #7777ff
-C3 #5555ff
-C4 #3333ff
-C5 #1111ff
-C6 #0000ff
-S0i3 #0011ff
-S0i1 #0022ff
idle #000000
waiting_for_cpu #ffff88
running #555555
diff --git a/timechart/model.py b/timechart/model.py
index 5b00a14..c3e5c20 100644
--- a/timechart/model.py
+++ b/timechart/model.py
@@ -14,7 +14,6 @@ import colors
import numpy
import sys
-c_state_table = ["C0","C1","C2","C4","C6","S0i1","S0i3"]
def _pretty_time(time):
if time > 1000000:
time = time/1000000.
@@ -337,38 +336,6 @@ class tcProject(HasTraits):
self.generic_process_start(process,event)
self.generic_process_end(process,event)
- def do_event_power_frequency(self,event):
- self.ensure_cpu_allocated(event.common_cpu)
- if event.type==2:# p_state
- tc = self.tmp_p_states[event.common_cpu]
- tc['start_ts'].append(event.timestamp)
- tc['linenumbers'].append(event.linenumber)
- tc['types'].append(event.state)
-
- def do_event_power_start(self,event):
- self.ensure_cpu_allocated(event.common_cpu)
- if event.type==1:# c_state
- tc = self.tmp_c_states[event.common_cpu]
- if len(tc['start_ts'])>len(tc['end_ts']):
- tc['end_ts'].append(event.timestamp)
- self.missed_power_end +=1
- if self.missed_power_end < 10:
- print "warning: missed power_end"
- if self.missed_power_end == 10:
- print "warning: missed power_end: wont warn anymore!"
- tc['start_ts'].append(event.timestamp)
- tc['types'].append(colors.get_color_id(c_state_table[int(event.state)]))
- tc['linenumbers'].append(event.linenumber)
-
- def do_event_power_end(self,event):
- self.ensure_cpu_allocated(event.common_cpu)
-
- tc = self.tmp_c_states[event.common_cpu]
- if len(tc['start_ts'])>len(tc['end_ts']):
- tc['end_ts'].append(event.timestamp)
-
-
-
def do_function_default(self,event):
process = self.generic_find_process(0,"kernel function:%s"%(event.callee),"function")
self.generic_process_start(process,event)
diff --git a/timechart/plugins/cpuidle.py b/timechart/plugins/cpuidle.py
index 1fb0dde..5564d15 100644
--- a/timechart/plugins/cpuidle.py
+++ b/timechart/plugins/cpuidle.py
@@ -1,9 +1,20 @@
from timechart.plugin import *
from timechart import colors
-from timechart.model import tcProcess, c_state_table
+from timechart.model import tcProcess
+
+c_state_table = ["C0","C1","C2","C4","C6","S0i1","S0i3"]
class cpu_idle(plugin):
additional_colors = """
+C0 #000000
+C1 #bbbbff
+C2 #7777ff
+C3 #5555ff
+C4 #3333ff
+C5 #1111ff
+C6 #0000ff
+S0i3 #0011ff
+S0i1 #0022ff
"""
additional_ftrace_parsers = [
('cpu_idle', 'state=%d cpu_id=%d', 'state', 'cpuid'),
@@ -12,6 +23,7 @@ class cpu_idle(plugin):
additional_process_types = {
}
+ # stable event support
@staticmethod
def do_event_cpu_idle(self,event):
self.ensure_cpu_allocated(event.cpuid)
@@ -30,6 +42,39 @@ class cpu_idle(plugin):
else :
if len(tc['start_ts'])>len(tc['end_ts']):
tc['end_ts'].append(event.timestamp)
+ # legacy event support
+ @staticmethod
+ def do_event_power_start(self,event):
+ self.ensure_cpu_allocated(event.common_cpu)
+ if event.type==1:# c_state
+ tc = self.tmp_c_states[event.common_cpu]
+ if len(tc['start_ts'])>len(tc['end_ts']):
+ tc['end_ts'].append(event.timestamp)
+ self.missed_power_end +=1
+ if self.missed_power_end < 10:
+ print "warning: missed power_end"
+ if self.missed_power_end == 10:
+ print "warning: missed power_end: wont warn anymore!"
+ tc['start_ts'].append(event.timestamp)
+ tc['types'].append(colors.get_color_id(c_state_table[int(event.state)]))
+ tc['linenumbers'].append(event.linenumber)
+
+ @staticmethod
+ def do_event_power_end(self,event):
+ self.ensure_cpu_allocated(event.common_cpu)
+
+ tc = self.tmp_c_states[event.common_cpu]
+ if len(tc['start_ts'])>len(tc['end_ts']):
+ tc['end_ts'].append(event.timestamp)
+
+ @staticmethod
+ def do_event_power_frequency(self,event):
+ self.ensure_cpu_allocated(event.common_cpu)
+ if event.type==2:# p_state
+ tc = self.tmp_p_states[event.common_cpu]
+ tc['start_ts'].append(event.timestamp)
+ tc['linenumbers'].append(event.linenumber)
+ tc['types'].append(event.state)
plugin_register(cpu_idle)