Пример #1
0
    def do_event_menu_select(proj, event):
        try:
            a = event.predicted
        except AttributeError:
            return
        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 = 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)
Пример #2
0
    def do_event_runtime_pm_status(proj,event):
        if proj.first_ts == 0:
            proj.first_ts = event.timestamp-1

        p = proj.generic_find_process(0,"runtime_pm:%s %s"%(event.driver,event.dev),"runtime_pm")
        if len(p['start_ts'])>len(p['end_ts']):
            p['end_ts'].append(event.timestamp)
        if event.status!="SUSPENDED":
            p['start_ts'].append(int(event.timestamp))
            p['types'].append(colors.get_color_id("rpm_%s"%(event.status.lower())))
            p['cpus'].append(event.common_cpu)
Пример #3
0
    def do_event_runtime_pm_status(proj,event):
        if proj.first_ts == 0:
            proj.first_ts = event.timestamp-1

        p = proj.generic_find_process(0,"runtime_pm:%s %s"%(event.driver,event.dev),"runtime_pm")
        if len(p['start_ts'])>len(p['end_ts']):
            p['end_ts'].append(event.timestamp)
        if event.status!="SUSPENDED":
            p['start_ts'].append(int(event.timestamp))
            p['types'].append(colors.get_color_id("rpm_%s"%(event.status.lower())))
            p['cpus'].append(event.common_cpu)
Пример #4
0
    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)
Пример #5
0
 def do_event_runtime_pm_usage(proj, event):
     p = proj.generic_find_process(0,"runtime_pm_usage:%s %s"%(event.driver,event.dev),"runtime_pm")
     if len(p['start_ts'])>len(p['end_ts']):
         p['end_ts'].append(event.timestamp)
     if event.usage!=0:
         p['start_ts'].append(int(event.timestamp))
         usagecolor = event.usage
         if usagecolor<0:
             usagecolor = -1
         if usagecolor>6:
             usagecolor = 6
         p['types'].append(colors.get_color_id("rpm_usage=%d"%(usagecolor)))
         p['cpus'].append(event.common_cpu)
Пример #6
0
 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)]))
Пример #7
0
 def do_event_runtime_pm_usage(proj, event):
     p = proj.generic_find_process(0,"runtime_pm_usage:%s %s"%(event.driver,event.dev),"runtime_pm")
     if len(p['start_ts'])>len(p['end_ts']):
         p['end_ts'].append(event.timestamp)
     if event.usage!=0:
         p['start_ts'].append(int(event.timestamp))
         usagecolor = event.usage
         if usagecolor<0:
             usagecolor = -1
         if usagecolor>6:
             usagecolor = 6
         p['types'].append(colors.get_color_id("rpm_usage=%d"%(usagecolor)))
         p['cpus'].append(event.common_cpu)
Пример #8
0
    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' or event.prev_state
                == 'R+'):  # mark prev to be waiting for cpu
            prev['start_ts'].append(event.timestamp)
            prev['cpus'].append(event.common_cpu)
            if event.prev_state == 'R':
                prev['types'].append(colors.get_color_id("waiting_for_cpu"))
            else:
                prev['types'].append(
                    colors.get_color_id("waiting_for_cpu_rplus"))

        self.generic_process_start(next, event)
Пример #9
0
    def do_event_menu_select(proj,event):
	try:
	   a= event.predicted
	except AttributeError:
	   return
        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 = 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)
Пример #10
0
 def do_event_cpu_idle(self,event):
     self.ensure_cpu_allocated(event.cpuid)
     tc = self.tmp_c_states[event.cpuid]
     if event.state != 4294967295 :
         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 cpu_idle end"
             if self.missed_power_end == 10:
                 print "warning: missed cpu_idle end: wont warn anymore!"
         tc['start_ts'].append(event.timestamp)
         tc['types'].append(colors.get_color_id(c_state_table[int(event.state)]))
     else :
         if len(tc['start_ts'])>len(tc['end_ts']):
             tc['end_ts'].append(event.timestamp)
Пример #11
0
 def start_cpu_idle(self, event):
     try:
         tc = self.tmp_c_states[event.cpuid]
     except:
         self.ensure_cpu_allocated(event.cpuid)
         tc = self.tmp_c_states[event.cpuid]
     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 cpu_idle end"
         if self.missed_power_end == 10:
             print "warning: missed cpu_idle end: wont warn anymore!"
     name = c_state_table[int(event.state)]
     tc['start_ts'].append(event.timestamp)
     tc['types'].append(colors.get_color_id(name))
     process = self.generic_find_process(0,"cpu%d/%s"%(event.cpuid,name),"cpuidle")
     self.generic_process_start(process,event, build_p_stack=False)
Пример #12
0
 def start_cpu_idle(self, event):
     try:
         tc = self.tmp_c_states[event.cpuid]
     except:
         self.ensure_cpu_allocated(event.cpuid)
         tc = self.tmp_c_states[event.cpuid]
     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 cpu_idle end"
         if self.missed_power_end == 10:
             print "warning: missed cpu_idle end: wont warn anymore!"
     name = c_state_table[int(event.state)]
     tc['start_ts'].append(event.timestamp)
     tc['types'].append(colors.get_color_id(name))
     process = self.generic_find_process(0,"cpu%d/%s"%(event.cpuid,name),"cpuidle")
     self.generic_process_start(process,event, build_p_stack=False)