Skip to contents

Creates deterministic execution resource policies and module requirements, then evaluates requirements against available capacity before execution begins. Resource policies govern admission only; operating-system enforcement belongs to supervised external-process execution. Each admit_execution_resources() call is itself stateless: it only checks requirements against policy's fixed capacity, minus whatever in_use the caller passes. Callers that admit multiple overlapping (not-yet-finalized) requests against the same policy – as start_supervised_external_command() does – must supply in_use themselves for those already-admitted requests to actually count against capacity.

Usage

new_execution_resource_policy(
  threads = 1L,
  memory_mb = Inf,
  temp_mb = Inf,
  processes = 1L,
  label = "default-resource-policy"
)

new_module_resource_requirements(
  threads = 1L,
  memory_mb = 0,
  temp_mb = 0,
  processes = 1L
)

admit_execution_resources(
  requirements,
  policy = new_execution_resource_policy(),
  in_use = c(threads = 0, memory_mb = 0, temp_mb = 0, processes = 0)
)

Arguments

threads

Maximum admitted threads for a policy, or required threads for a module.

memory_mb

Maximum admitted memory in MiB for a policy, or required memory in MiB for a module.

temp_mb

Maximum admitted temporary storage in MiB for a policy, or required temporary storage in MiB for a module.

processes

Maximum admitted processes for a policy, or required processes for a module.

label

Stable policy identifier recorded in execution metadata.

requirements

A validated named numeric vector created by new_module_resource_requirements().

policy

A PopgenVCFExecutionResourcePolicy object.

in_use

Resources already committed against policy by other still-running admissions, as a named vector with the same names as requirements (default: none). Subtracted from policy's capacity before checking requirements.

Value

new_execution_resource_policy() returns a validated PopgenVCFExecutionResourcePolicy object.

new_module_resource_requirements() returns a validated named numeric vector containing thread, memory, temporary-storage, and process requirements.

admit_execution_resources() returns a PopgenVCFExecutionAdmissionDecision object describing whether the requirements were admitted, which capacities were exceeded, and the evaluated requirements and capacities.

Examples

policy <- new_execution_resource_policy(
  threads = 4L,
  memory_mb = 8192,
  temp_mb = 2048,
  processes = 2L,
  label = "workstation"
)

requirements <- new_module_resource_requirements(
  threads = 2L,
  memory_mb = 1024,
  temp_mb = 256,
  processes = 1L
)

decision <- admit_execution_resources(requirements, policy)
decision$admitted