@@ -53,6 +53,7 @@ class Meter(object):
5353 SNAPSHOT_PERIOD = 600
5454 snapshot_countdown = 1
5555 sensor = None
56+ last_usage = None
5657
5758 def __init__ (self , sensor ):
5859 self .sensor = sensor
@@ -94,21 +95,23 @@ def collect_snapshot(self):
9495
9596 def collect_metrics (self ):
9697 u = resource .getrusage (resource .RUSAGE_SELF )
97- m = Metrics (ru_utime = u [0 ],
98- ru_stime = u [1 ],
98+ m = Metrics (ru_utime = u [0 ] if not self . last_usage else u [ 0 ] - self . last_usage [ 0 ] ,
99+ ru_stime = u [1 ] if not self . last_usage else u [ 1 ] - self . last_usage [ 1 ] ,
99100 ru_maxrss = u [2 ],
100101 ru_ixrss = u [3 ],
101102 ru_idrss = u [4 ],
102103 ru_isrss = u [5 ],
103- ru_minflt = u [6 ],
104- ru_majflt = u [7 ],
105- ru_nswap = u [8 ],
106- ru_inblock = u [9 ],
107- ru_oublock = u [10 ],
108- ru_msgsnd = u [11 ],
109- ru_msgrcv = u [12 ],
110- ru_nsignals = u [13 ],
111- ru_nvcs = u [14 ],
112- ru_nivcsw = u [15 ])
104+ ru_minflt = u [6 ] if not self .last_usage else u [6 ] - self .last_usage [6 ],
105+ ru_majflt = u [7 ] if not self .last_usage else u [7 ] - self .last_usage [7 ],
106+ ru_nswap = u [8 ] if not self .last_usage else u [8 ] - self .last_usage [8 ],
107+ ru_inblock = u [9 ] if not self .last_usage else u [9 ] - self .last_usage [9 ],
108+ ru_oublock = u [10 ] if not self .last_usage else u [10 ] - self .last_usage [10 ],
109+ ru_msgsnd = u [11 ] if not self .last_usage else u [11 ] - self .last_usage [11 ],
110+ ru_msgrcv = u [12 ] if not self .last_usage else u [12 ] - self .last_usage [12 ],
111+ ru_nsignals = u [13 ] if not self .last_usage else u [13 ] - self .last_usage [13 ],
112+ ru_nvcs = u [14 ] if not self .last_usage else u [14 ] - self .last_usage [14 ],
113+ ru_nivcsw = u [15 ] if not self .last_usage else u [15 ] - self .last_usage [15 ])
114+
115+ self .last_usage = u
113116
114117 return m
0 commit comments