Skip to content

Commit f17552d

Browse files
committed
re-update style after fixing issues
1 parent f04446c commit f17552d

1 file changed

Lines changed: 27 additions & 49 deletions

File tree

sams/sampler/Software.py

Lines changed: 27 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -96,15 +96,15 @@ def _parse_stat(self, stat):
9696
def update(self, uptime):
9797
"""Update information about pids"""
9898
if self.done:
99-
logger.debug("Pid: %d is done", self.pid)
99+
logger.debug(f'Pid: {self.pid:d} is done')
100100
return
101-
logger.debug("Update pid: %d", self.pid)
101+
logger.debug(f'Update pid: {self.pid:d}')
102102
self.uptime = uptime
103103

104104
try:
105-
tasks = [int(f) for f in os.listdir(f'/proc/{self.pid}/task') if re.match(r"^\d+$", f)]
105+
tasks = [int(f) for f in os.listdir(f'/proc/{self.pid:d}/task') if re.match(r"^\d+$", f)]
106106
except Exception:
107-
logger.debug(f'Failed to read /proc/{self.pid}/task, most likely due to process ending')
107+
logger.debug(f'Failed to read /proc/{self.pid:d}/task, most likely due to process ending')
108108
self.done = True
109109
return
110110

@@ -136,7 +136,7 @@ def __init__(self, id, outQueue, config):
136136
super(Sampler, self).__init__(id, outQueue, config)
137137
self.processes = {}
138138
self.create_time = time.time()
139-
self.previous_sample = None
139+
self.previous_total = None
140140
self.previous_sample_time = None
141141
self.software_mapper = None
142142

@@ -152,6 +152,7 @@ def __init__(self, id, outQueue, config):
152152

153153
def map_software(self,
154154
aggr: Dict) -> Dict:
155+
"""Map usage to softwares"""
155156
output = dict()
156157
if not self.software_mapper:
157158
logger.debug('No software_mapper loaded...')
@@ -169,64 +170,41 @@ def map_software(self,
169170
logger.debug(e)
170171
return output
171172

172-
def collect_sample(self):
173-
logger.debug('collect_sample()')
174-
173+
def _collect_sample(self) -> Tuple[Dict, Dict]:
174+
logger.debug('_collect_sample()')
175175
with open('/proc/uptime', 'r') as f:
176176
uptime = float(f.readline().split()[0])
177-
178177
for pid in self.pids:
179178
logger.debug(f'evaluate pid: {pid}')
180179
if pid not in self.processes.keys():
181180
logger.debug(f'Create new instance of Process for pid: {pid}')
182181
self.processes[pid] = Process(pid, self.jobid)
183182
self.processes[pid].update(uptime)
184-
185183
# Send information about current usage
186-
aggr, total = self._aggregate()
187-
sample = dict(current=dict(
188-
software=self.map_software(aggr),
189-
total_user=total['user'],
190-
total_system=total['system']))
191-
return sample
184+
return self._aggregate
192185

193186
def sample(self):
194187
logger.debug('sample()')
195-
196-
with open('/proc/uptime', 'r') as f:
197-
uptime = float(f.readline().split()[0])
198-
199-
for pid in self.pids:
200-
logger.debug(f'evaluate pid: {pid}')
201-
if pid not in self.processes.keys():
202-
logger.debug(f'Create new instance of Process for pid: {pid}')
203-
self.processes[pid] = Process(pid, self.jobid)
204-
self.processes[pid].update(uptime)
205-
206-
# Send information about current usage
207-
aggr, total = self._aggregate()
208-
if self.previous_sample_time is not None:
209-
time_diff = time.time() - self.previous_sample_time
210-
if time_diff > self.sampler_interval / 2:
211-
sample = {
212-
"current": {
213-
"software": self.map_software(aggr),
214-
"total_user": total["user"],
215-
"total_system": total["system"],
216-
"user": (total["user"] - self.previous_total["user"])
217-
/ time_diff,
218-
"system": (total["system"] - self.previous_total["system"])
219-
/ time_diff,
220-
}
221-
}
222-
223-
self.store(sample)
224-
self.previous_total = total
225-
self.previous_sample_time = time.time()
226-
self._most_recent_sample = self.storage_wrapping(sample)
227-
else:
188+
aggr, total = self._collect_sample()
189+
# Initial call
190+
if self.previous_sample_time is None:
191+
self.previous_total = total
192+
self.previous_sample_time = time.time()
193+
return
194+
time_diff = time.time() - self.previous_sample_time
195+
previous_user = self.previous_sample['total']['user']
196+
previous_system = self.previous_sample['total']['system']
197+
if time_diff > self.sampler_interval / 2:
198+
sample = dict(current=dict(
199+
software=self.map_software(aggr),
200+
total_user=total["user"],
201+
total_system=total["system"],
202+
user=(total["user"] - previous_user) / time_diff,
203+
system=(total["system"] - previous_system) / time_diff))
204+
self.store(sample)
228205
self.previous_total = total
229206
self.previous_sample_time = time.time()
207+
self._most_recent_sample = self.storage_wrapping(sample)
230208

231209
@property
232210
def valid_procs(self):

0 commit comments

Comments
 (0)