Loading main.py +5 −4 Original line number Diff line number Diff line Loading @@ -82,8 +82,8 @@ if args.replay: extracted_date = "Date not found" DIR_NAME = create_casename() # Read either npz file or telemetry parquet files if args.replay[0].endswith(".npz"): # Read telemetry data if args.replay[0].endswith(".npz"): # read .npz file print(f"Loading {args.replay[0]}...") jobs = td.load_snapshot(args.replay[0]) Loading @@ -98,9 +98,10 @@ if args.replay: job['requested_nodes'] = None job['submit_time'] = next_arrival(1 / config['JOB_ARRIVAL_TIME']) else: else: # custom data loader print(*args.replay) jobs = td.load_data(args.replay) for job in jobs: job['priority'] = sc.policy.aging_boost(job['nodes_required']) td.save_snapshot(jobs, filename=DIR_NAME) # Set number of timesteps based on the last job running which we assume Loading @@ -113,7 +114,7 @@ if args.replay: print(f'Simulating {len(jobs)} jobs for {timesteps} seconds') time.sleep(1) else: else: # synthetic jobs wl = Workload(config) jobs = getattr(wl, args.workload)(num_jobs=args.numjobs) Loading raps/policy.py +9 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,15 @@ class Policy: else: raise ValueError(f"Unknown policy type: {self.policy_type}") def aging_boost(self, nnodes): """Frontier aging policy""" if nnodes > 5645: return 8 elif nnodes > 1882: return 4 else: return 0 def find_backfill_job(self, queue, num_free_nodes, current_time): """ This implementation is based on pseudocode from Leonenkov and Zhumatiy. "Introducing new backfill-based scheduler for slurm resource manager." Loading Loading
main.py +5 −4 Original line number Diff line number Diff line Loading @@ -82,8 +82,8 @@ if args.replay: extracted_date = "Date not found" DIR_NAME = create_casename() # Read either npz file or telemetry parquet files if args.replay[0].endswith(".npz"): # Read telemetry data if args.replay[0].endswith(".npz"): # read .npz file print(f"Loading {args.replay[0]}...") jobs = td.load_snapshot(args.replay[0]) Loading @@ -98,9 +98,10 @@ if args.replay: job['requested_nodes'] = None job['submit_time'] = next_arrival(1 / config['JOB_ARRIVAL_TIME']) else: else: # custom data loader print(*args.replay) jobs = td.load_data(args.replay) for job in jobs: job['priority'] = sc.policy.aging_boost(job['nodes_required']) td.save_snapshot(jobs, filename=DIR_NAME) # Set number of timesteps based on the last job running which we assume Loading @@ -113,7 +114,7 @@ if args.replay: print(f'Simulating {len(jobs)} jobs for {timesteps} seconds') time.sleep(1) else: else: # synthetic jobs wl = Workload(config) jobs = getattr(wl, args.workload)(num_jobs=args.numjobs) Loading
raps/policy.py +9 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,15 @@ class Policy: else: raise ValueError(f"Unknown policy type: {self.policy_type}") def aging_boost(self, nnodes): """Frontier aging policy""" if nnodes > 5645: return 8 elif nnodes > 1882: return 4 else: return 0 def find_backfill_job(self, queue, num_free_nodes, current_time): """ This implementation is based on pseudocode from Leonenkov and Zhumatiy. "Introducing new backfill-based scheduler for slurm resource manager." Loading