Commit 0fbee8da authored by Björn Brandenburg's avatar Björn Brandenburg

fix definition change fallout in swap analysis

parent 34c14244
Pipeline #19387 passed with stages
in 3 minutes and 32 seconds
...@@ -234,7 +234,7 @@ Section SwappedFacts. ...@@ -234,7 +234,7 @@ Section SwappedFacts.
by apply ltnW. by apply ltnW.
Qed. Qed.
(* We further observe that, *after* t2, the swapped schedule again does not (* Likewise, we observe that, *after* t2, the swapped schedule again does not
differ with regard to the service received by any job. *) differ with regard to the service received by any job. *)
Lemma service_after_swap_invariant: Lemma service_after_swap_invariant:
forall t, forall t,
...@@ -299,11 +299,11 @@ Section SwappedScheduleProperties. ...@@ -299,11 +299,11 @@ Section SwappedScheduleProperties.
[t1] and [t2] have been swapped. *) [t1] and [t2] have been swapped. *)
Let sched' := swapped sched t1 t2. Let sched' := swapped sched t1 t2.
(* First, we observe that if completed jobs don't execute in the (* First, we observe that if jobs never accomulate more service than
original schedule, then that's still the case after the swap. *) required, then that's still the case after the swap. *)
Lemma swapped_completed_jobs_dont_execute: Lemma swapped_service_bound:
completed_jobs_dont_execute sched -> (forall j t, service sched j t <= job_cost j) ->
completed_jobs_dont_execute sched'. (forall j t, service sched' j t <= job_cost j).
Proof. Proof.
move=> COMP. move=> COMP.
rewrite /completed_jobs_dont_execute => j t. rewrite /completed_jobs_dont_execute => j t.
...@@ -325,6 +325,22 @@ Section SwappedScheduleProperties. ...@@ -325,6 +325,22 @@ Section SwappedScheduleProperties.
} }
Qed. Qed.
(* From the above service bound, we conclude that, if if completed jobs don't
execute in the original schedule, then that's still the case after the
swap, assuming an ideal unit-service model (i.e., scheduled jobs receive
exactly one unit of service). *)
Lemma swapped_completed_jobs_dont_execute:
unit_service_proc_model ->
ideal_progress_proc_model ->
completed_jobs_dont_execute sched ->
completed_jobs_dont_execute sched'.
Proof.
move=> UNIT IDEAL COMP.
apply ideal_progress_completed_jobs => //.
apply swapped_service_bound.
by move=> j; apply service_at_most_cost.
Qed.
(* Suppose all jobs in the original schedule come from some arrival sequence... *) (* Suppose all jobs in the original schedule come from some arrival sequence... *)
Variable arr_seq: arrival_sequence Job. Variable arr_seq: arrival_sequence Job.
Hypothesis H_from_arr_seq: jobs_come_from_arrival_sequence sched arr_seq. Hypothesis H_from_arr_seq: jobs_come_from_arrival_sequence sched arr_seq.
...@@ -344,7 +360,7 @@ End SwappedScheduleProperties. ...@@ -344,7 +360,7 @@ End SwappedScheduleProperties.
when the job moved earlier has an earlier deadline than the job when the job moved earlier has an earlier deadline than the job
being moved to a later allocation, assuming that the former has being moved to a later allocation, assuming that the former has
not yet missed its deadline, which is the core transformation of not yet missed its deadline, which is the core transformation of
the classic EDF optimality proof. *) the classic EDF optimality proof. *)
Section EDFSwap. Section EDFSwap.
(* For any given type of jobs with costs and deadlines... *) (* For any given type of jobs with costs and deadlines... *)
Context {Job : JobType} `{JobCost Job} `{JobDeadline Job}. Context {Job : JobType} `{JobCost Job} `{JobDeadline Job}.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment