Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/console/interface/memphis/plugins/cpu/info.py
blob: 9cb1ad420cd580666a11340918a599f2796e9681 (plain)
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
42
43
44
45
46
47
48
###########################################################
# Main function:
# -----------------
# self:  self plugin object
# mself: memphis object / principal class
# pinfo: row with information about current tracing process
############################################################

def plg_on_top_data_refresh(self, pinfo):
    PI = self.INTERNALS['Plg'].proc
    
    pid = pinfo['pid']
    
    # Get JIFFIES CPU usage
    used_jiffies = pinfo['utime'] + pinfo['stime']
    last_ujiffies = get_pid_ujiffies(self, pid)
    
    cpu_usage = PI.get_CPU_usage(self.cpu_hz, used_jiffies, pinfo['start_time'])

    # Get PERCENT CPU usage
    if last_ujiffies == 0.0:
        pcpu = 0.0
        set_pid_ujiffies(self, pid, cpu_usage['used_jiffies'])
        data = [int(pcpu)]
        return data
                
    used_jiffies  = cpu_usage['used_jiffies'] - last_ujiffies

    # Available jiffies are
    avail_jiffies = (500/1000.0)*self.cpu_hz # 500 = 0.5 second
    pcpu = ((used_jiffies*100)/avail_jiffies)
    
    set_pid_ujiffies(self, pid, cpu_usage['used_jiffies'])
        
    data = [int(pcpu)]
    return data

def get_pid_ujiffies(self, pid):
    
    if pid in self.pids_ujiffies:
        return self.pids_ujiffies[pid]
    else:
        set_pid_ujiffies(self, pid, 0)
        return self.pids_ujiffies[pid]

def set_pid_ujiffies(self, pid, ujiffies):
    self.pids_ujiffies[pid] = ujiffies