Skip to main content

Windowing

OpenDT aggregates tasks into time windows for batch simulation. This approach balances simulation accuracy with computational efficiency.

How Windows Work

Tasks are assigned to windows based on their submission timestamp:

Window 0: [00:00 - 00:05)  →  Tasks with submission_time in this range
Window 1: [00:05 - 00:10) → ...
Window 2: [00:10 - 00:15) → ...

The window size is controlled by simulation_frequency_minutes in the configuration.

Window Lifecycle

  1. Open: Window accepts tasks as they arrive
  2. Fill: Tasks accumulate in the window buffer
  3. Close: Heartbeat timestamp exceeds window end time
  4. Simulate: All accumulated tasks are processed by OpenDC
  5. Output: Results are written to agg_results.parquet

Heartbeats

Heartbeat messages are synthetic timestamps published by dc-mock to signal time progression. They enable deterministic window closing even when no tasks arrive during a period.

Without heartbeats, windows would only close when new tasks arrive, leading to unpredictable timing in sparse workloads.

Cumulative Simulation

OpenDT uses cumulative simulation: each window simulates all tasks from the beginning of the workload, not just tasks in that window.

This approach ensures accurate power predictions because:

  • Long-running tasks affect power across multiple windows
  • Scheduler state persists between windows
  • Host allocations remain consistent

Tuning Window Size

Window SizeTrade-offs
Small (1-5 min)More granular results, higher computational cost
Large (30-60 min)Fewer simulations, less granular results

For long experiments, larger windows reduce total runtime while still capturing overall trends.