/usr/share/pyshared/timechart/plugins/sched.py is in pytimechart 1.0.0~rc1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | from timechart.plugin import *
from timechart import colors
from timechart.model import tcProcess
class sched(plugin):
additional_colors = """
"""
additional_ftrace_parsers = [
]
additional_process_types = {
"kernel_process":(tcProcess, KERNEL_CLASS),
"user_process":(tcProcess, USER_CLASS)
}
@staticmethod
def do_event_sched_switch(self,event):
# @todo differenciate between kernel and user process
prev = self.generic_find_process(event.prev_pid,event.prev_comm,"user_process",event.timestamp-100000000)
next = self.generic_find_process(event.next_pid,event.next_comm,"user_process",event.timestamp-100000000)
self.generic_process_end(prev,event)
if event.__dict__.has_key('prev_state') and event.prev_state == 'R':# mark prev to be waiting for cpu
prev['start_ts'].append(event.timestamp)
prev['types'].append(colors.get_color_id("waiting_for_cpu"))
prev['cpus'].append(event.common_cpu)
self.generic_process_start(next,event)
@staticmethod
def do_event_sched_wakeup(self,event):
p_stack = self.cur_process[event.common_cpu]
if p_stack:
p = p_stack[-1]
self.wake_events.append(((p['comm'],p['pid']),(event.comm,event.pid),event.timestamp))
else:
self.wake_events.append(((event.common_comm,event.common_pid),(event.comm,event.pid),event.timestamp))
plugin_register(sched)
|