From 1dcdca7e09e34cdde53f6d14db56780688e19eae Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Tue, 16 Nov 2021 16:30:55 +0100 Subject: refactor(workflow): Remove WorkflowSchedulerMode This change removes the WorkflowSchedulerMode interface in favour of an integrated timer scheduler approach that batches scheduling cycles over a user-specified quantum. This quantum can be lowered to a small value to get the interactive behavior. There is no replacement for the random behavior, but we believe that such a policy makes no sense in a real-world scenario. --- .../kotlin/org/opendc/workflow/workload/WorkflowSchedulerSpec.kt | 4 ++-- .../kotlin/org/opendc/workflow/workload/WorkflowServiceHelper.kt | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'opendc-workflow/opendc-workflow-workload/src') diff --git a/opendc-workflow/opendc-workflow-workload/src/main/kotlin/org/opendc/workflow/workload/WorkflowSchedulerSpec.kt b/opendc-workflow/opendc-workflow-workload/src/main/kotlin/org/opendc/workflow/workload/WorkflowSchedulerSpec.kt index b22e16d9..d6a375b6 100644 --- a/opendc-workflow/opendc-workflow-workload/src/main/kotlin/org/opendc/workflow/workload/WorkflowSchedulerSpec.kt +++ b/opendc-workflow/opendc-workflow-workload/src/main/kotlin/org/opendc/workflow/workload/WorkflowSchedulerSpec.kt @@ -22,17 +22,17 @@ package org.opendc.workflow.workload -import org.opendc.workflow.service.scheduler.WorkflowSchedulerMode import org.opendc.workflow.service.scheduler.job.JobAdmissionPolicy import org.opendc.workflow.service.scheduler.job.JobOrderPolicy import org.opendc.workflow.service.scheduler.task.TaskEligibilityPolicy import org.opendc.workflow.service.scheduler.task.TaskOrderPolicy +import java.time.Duration /** * Specification of the scheduling policies of the workflow scheduler. */ public data class WorkflowSchedulerSpec( - val batchMode: WorkflowSchedulerMode, + val schedulingQuantum: Duration, val jobAdmissionPolicy: JobAdmissionPolicy, val jobOrderPolicy: JobOrderPolicy, val taskEligibilityPolicy: TaskEligibilityPolicy, diff --git a/opendc-workflow/opendc-workflow-workload/src/main/kotlin/org/opendc/workflow/workload/WorkflowServiceHelper.kt b/opendc-workflow/opendc-workflow-workload/src/main/kotlin/org/opendc/workflow/workload/WorkflowServiceHelper.kt index 236a036b..0198900f 100644 --- a/opendc-workflow/opendc-workflow-workload/src/main/kotlin/org/opendc/workflow/workload/WorkflowServiceHelper.kt +++ b/opendc-workflow/opendc-workflow-workload/src/main/kotlin/org/opendc/workflow/workload/WorkflowServiceHelper.kt @@ -49,7 +49,7 @@ public class WorkflowServiceHelper( private val clock: Clock, private val computeClient: ComputeClient, private val schedulerSpec: WorkflowSchedulerSpec - ) : AutoCloseable { +) : AutoCloseable { /** * The [WorkflowService] that is constructed by this runner. */ @@ -76,7 +76,7 @@ public class WorkflowServiceHelper( clock, meterProvider, computeClient, - mode = schedulerSpec.batchMode, + schedulerSpec.schedulingQuantum, jobAdmissionPolicy = schedulerSpec.jobAdmissionPolicy, jobOrderPolicy = schedulerSpec.jobOrderPolicy, taskEligibilityPolicy = schedulerSpec.taskEligibilityPolicy, @@ -111,7 +111,7 @@ public class WorkflowServiceHelper( delay(((submitTime - offset) - clock.millis()).coerceAtLeast(0)) } - launch { service.run(job) } + launch { service.invoke(job) } } } } -- cgit v1.2.3