mjqm-simulator

Simple heterogeneous workload

A basic example with 4 job classes requiring different numbers of cores, useful for initial testing and understanding policy behaviour.

Configuration

identifier = "simple_heterogeneous"
events = 100000
repetitions = 20
cores = 16

# Use FIFO policy (can substitute with any policy)
policy = "fifo"

# All classes use exponential distributions
arrival.distribution = "exponential"
service.distribution = "exponential"
service.mean = 1

# Define job classes with different server requirements
[[class]]
cores = 1
arrival.prob = 0.4  # 40% of arrivals

[[class]]
cores = 2
arrival.prob = 0.3  # 30% of arrivals

[[class]]
cores = 4
arrival.prob = 0.2  # 20% of arrivals

[[class]]
cores = 8
arrival.prob = 0.1  # 10% of arrivals

# Sweep across arrival rates to observe performance
[[pivot]]
arrival.rate = [0.5, 1.0, 2.0, 3.0, 4.0, 5.0]

What this tests

Expected behaviour

With 16 total cores and this workload:

FIFO will experience head-of-line blocking when 8-core jobs arrive and fewer than 8 servers are available, even if smaller jobs could be accommodated.

Running the experiment

  1. Save this configuration to Inputs/simple_heterogeneous.toml
  2. Run: ./simulator simple_heterogeneous
  3. Results will be in Results/simple_heterogeneous/

Try variations