Loading src/components/simulations/raps.form.tsx +62 −46 Original line number Diff line number Diff line Loading @@ -17,14 +17,45 @@ export function RAPSForm(props: { choices={workloadTypes.map(w => ({ label: w, value: w }))} value={props.form.workload} onChange={(e) => { const workload = e.target.value as WorkloadType; if (workload == "replay") { props.setForm({ ...props.form, workload: e.target.value as WorkloadType, workload: "replay", arrival: "prescribed", numjobs: undefined, seed: undefined, replay: true, scheduler: "default", policy: "replay", }) } else { props.setForm({ ...props.form, workload: workload, arrival: "prescribed", replay: false, policy: props.form.policy == 'replay' ? 'fcfs' : props.form.policy, }) } }} /> {props.form.workload && ( <> {props.form.workload == "replay" ? (<> <Select label="Reschedule Arrival" choices={[ { label: "prescribed", value: "prescribed" }, { label: "poisson", value: "poisson" }, ]} value={props.form.policy} onChange={(e) => { props.setForm({ ...props.form, arrival: e.target.value as "prescribed" | "poisson", }); }} /> </>) : (<> <NumberInput inputProps={{ // TODO handle invalid inputs better onChange: (e: ChangeEvent<HTMLInputElement>) => { Loading Loading @@ -53,8 +84,6 @@ export function RAPSForm(props: { }} className="row-start-2" /> </> )} <Select label="Scheduler" choices={Object.keys(schedulers).map(s => ({ label: s, value: s }))} Loading @@ -79,20 +108,7 @@ export function RAPSForm(props: { }); }} /> <Select label="Reschedule Arrival" choices={[ { label: "prescribed", value: "prescribed" }, { label: "poisson", value: "poisson" }, ]} value={props.form.policy} onChange={(e) => { props.setForm({ ...props.form, arrival: e.target.value as "prescribed" | "poisson", }); }} /> </>)} <NumberInput inputProps={{ onChange: (e: ChangeEvent<HTMLInputElement>) => { Loading src/models/SimulationConfig.model.ts +2 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ export interface SimulationConfig { // scale?: number; // live?: boolean; workload: WorkloadType; replay: boolean; // multimodal?: number[]; // jobsize_distribution?: ("uniform" | "weibull" | "normal")[] | null; // jobsize_normal_mean?: number | null; Loading Loading @@ -109,6 +110,7 @@ export function getDefaultSimulationConfig(): SimulationConfig { cooling: false, weather: false, workload: "random", replay: false, numjobs: undefined, seed: undefined, scheduler: "default", Loading Loading
src/components/simulations/raps.form.tsx +62 −46 Original line number Diff line number Diff line Loading @@ -17,14 +17,45 @@ export function RAPSForm(props: { choices={workloadTypes.map(w => ({ label: w, value: w }))} value={props.form.workload} onChange={(e) => { const workload = e.target.value as WorkloadType; if (workload == "replay") { props.setForm({ ...props.form, workload: e.target.value as WorkloadType, workload: "replay", arrival: "prescribed", numjobs: undefined, seed: undefined, replay: true, scheduler: "default", policy: "replay", }) } else { props.setForm({ ...props.form, workload: workload, arrival: "prescribed", replay: false, policy: props.form.policy == 'replay' ? 'fcfs' : props.form.policy, }) } }} /> {props.form.workload && ( <> {props.form.workload == "replay" ? (<> <Select label="Reschedule Arrival" choices={[ { label: "prescribed", value: "prescribed" }, { label: "poisson", value: "poisson" }, ]} value={props.form.policy} onChange={(e) => { props.setForm({ ...props.form, arrival: e.target.value as "prescribed" | "poisson", }); }} /> </>) : (<> <NumberInput inputProps={{ // TODO handle invalid inputs better onChange: (e: ChangeEvent<HTMLInputElement>) => { Loading Loading @@ -53,8 +84,6 @@ export function RAPSForm(props: { }} className="row-start-2" /> </> )} <Select label="Scheduler" choices={Object.keys(schedulers).map(s => ({ label: s, value: s }))} Loading @@ -79,20 +108,7 @@ export function RAPSForm(props: { }); }} /> <Select label="Reschedule Arrival" choices={[ { label: "prescribed", value: "prescribed" }, { label: "poisson", value: "poisson" }, ]} value={props.form.policy} onChange={(e) => { props.setForm({ ...props.form, arrival: e.target.value as "prescribed" | "poisson", }); }} /> </>)} <NumberInput inputProps={{ onChange: (e: ChangeEvent<HTMLInputElement>) => { Loading
src/models/SimulationConfig.model.ts +2 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ export interface SimulationConfig { // scale?: number; // live?: boolean; workload: WorkloadType; replay: boolean; // multimodal?: number[]; // jobsize_distribution?: ("uniform" | "weibull" | "normal")[] | null; // jobsize_normal_mean?: number | null; Loading Loading @@ -109,6 +110,7 @@ export function getDefaultSimulationConfig(): SimulationConfig { cooling: false, weather: false, workload: "random", replay: false, numjobs: undefined, seed: undefined, scheduler: "default", Loading