Commit 00382592 authored by Brewer, Wes's avatar Brewer, Wes
Browse files

Add Frontier aging policy

parent 7e4a960f
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -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])

@@ -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
@@ -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)

+9 −0
Original line number Diff line number Diff line
@@ -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."