Skip to content
Snippets Groups Projects
Commit d59c643b authored by Millian Poquet's avatar Millian Poquet
Browse files

script: make batsim wl generator idempotent

parent 2d24408c
No related branches found
No related tags found
No related merge requests found
...@@ -46,6 +46,15 @@ def generate_node_file(job_profile_dir, job_min_dt, job_max_dt, job_node, node_i ...@@ -46,6 +46,15 @@ def generate_node_file(job_profile_dir, job_min_dt, job_max_dt, job_node, node_i
f.write(f'{node_id} m_usage {usage:.4f} {desired_flops:.1e}\n') f.write(f'{node_id} m_usage {usage:.4f} {desired_flops:.1e}\n')
def generate_job_power_time_series(job_profile_dir, job_min_dt, job_max_dt, job_nodes, min_power): def generate_job_power_time_series(job_profile_dir, job_min_dt, job_max_dt, job_nodes, min_power):
fname = f'{job_profile_dir}/dynpower.csv'
static_watts = len(job_nodes) * min_power
# assume that already existing dirs have valid content
if os.path.exists(job_profile_dir):
df = pd.read_csv(fname)
df['job_total_dynamic_power'] = df['job_total_dynamic_power'] + static_watts
return float(df['job_total_dynamic_power'].mean()), float(df['job_total_dynamic_power'].max())
global POWER_DF global POWER_DF
time_mask = (POWER_DF['timestamp'] >= job_min_dt) & (POWER_DF['timestamp'] <= job_max_dt) time_mask = (POWER_DF['timestamp'] >= job_min_dt) & (POWER_DF['timestamp'] <= job_max_dt)
space_mask = POWER_DF['node'].isin(job_nodes) space_mask = POWER_DF['node'].isin(job_nodes)
...@@ -56,11 +65,10 @@ def generate_job_power_time_series(job_profile_dir, job_min_dt, job_max_dt, job_ ...@@ -56,11 +65,10 @@ def generate_job_power_time_series(job_profile_dir, job_min_dt, job_max_dt, job_
job_real_power_max = float(job_summed_power_df.max()) job_real_power_max = float(job_summed_power_df.max())
# remove static part # remove static part
static_watts = len(job_nodes) * min_power
job_summed_power_df = job_summed_power_df - static_watts job_summed_power_df = job_summed_power_df - static_watts
os.makedirs(job_profile_dir, exist_ok=True) os.makedirs(job_profile_dir, exist_ok=True)
job_summed_power_df.to_csv(f'{job_profile_dir}/dynpower.csv', index=False, header=['job_total_dynamic_power']) job_summed_power_df.to_csv(fname, index=False, header=['job_total_dynamic_power'])
return job_real_power_mean, job_real_power_max # return dynamic values return job_real_power_mean, job_real_power_max # return dynamic values
def main(): def main():
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment