Skip to content

Commit 2e5d2a0

Browse files
committed
Add output format similar to pbsnodes output
1 parent 8f9fd01 commit 2e5d2a0

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

source-code/dash/generate_data.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,58 @@
55
from datetime import datetime, timedelta
66
import random
77

8+
9+
class Node_info:
10+
11+
def __init__(self, node_name):
12+
self._name = node_name
13+
self._cpu_load = None
14+
self._mem_load = None
15+
self._jobs = list()
16+
17+
@property
18+
def name(self):
19+
return self._name
20+
21+
def add_job_id(self, job_id):
22+
self._jobs.append(job_id)
23+
24+
@property
25+
def _job_ids(self):
26+
return ','.join(self._jobs)
27+
28+
@property
29+
def job_ids(self):
30+
return self._jobs.copy()
31+
32+
@property
33+
def state(self):
34+
return 'busy' if self._jobs else 'idle'
35+
36+
@property
37+
def cpu_load(self):
38+
return self._cpu_load
39+
40+
@cpu_load.setter
41+
def cpu_load(self, cpu_load):
42+
self._cpu_load = cpu_load
43+
44+
@property
45+
def mem_load(self):
46+
return self._mem_load
47+
48+
@mem_load.setter
49+
def mem_load(self, mem_load):
50+
self._mem_load = mem_load
51+
52+
def __repr__(self):
53+
repr = f'{self.name}\n'
54+
repr += f'\tstate = {self.state}\n'
55+
repr += f'\tjobs = {self._job_ids}\n'
56+
repr += f'\tstatus = cpu_load={self.cpu_load};mem_load={self.mem_load}\n'
57+
return repr
58+
59+
860
class Job:
961

1062
def __init__(self, job_id, nr_nodes, walltime):
@@ -142,6 +194,7 @@ def cycle(self, delta):
142194
for _ in range(options.nr_timesteps):
143195
print('-'*36)
144196
print(f'---- {time} ----')
197+
node_infos = dict()
145198
time_str = datetime.strftime(time, '%Y-%m-%d %H:%M:%S')
146199
resource_manager.qstat()
147200
for node in nodes:
@@ -152,8 +205,18 @@ def cycle(self, delta):
152205
cpu_load = f'{10*random.random():.2f}'
153206
mem_load = f'{10*random.random():.2f}'
154207
csv_load_writer.writerow([time_str, node, cpu_load, mem_load])
208+
node_info = Node_info(node)
209+
node_info.cpu_load = cpu_load
210+
node_info.mem_load = mem_load
211+
node_infos[node] = node_info
155212
resource_manager.cycle(delta)
156213
for job in resource_manager.running_jobs:
157214
for node in job.nodes:
158215
csv_jobs_writer.writerow([time_str, job.job_id, node])
216+
node_infos[node].add_job_id(job.job_id)
217+
timestamp = datetime.strftime(time, '%Y%m%d_%H%M%S')
218+
log_file_name = f'{options.file}_log_{timestamp}.txt'
219+
with open(log_file_name, 'w') as log_file:
220+
for node in sorted(node_infos.keys()):
221+
print(node_infos[node], file=log_file)
159222
time += delta

0 commit comments

Comments
 (0)