Right now, impalab runs tasks strictly sequentially. If you look at run_benchmarks in your benchmark.rs file, the orchestrator loops over each task and calls run_pipeline, which spawns a fresh instance of both the generator and the executor for every single task.
- The Problem: If you have 5 executor tasks, the generator processes and computes the exact same dataset 5 separate times.
- The Streaming Solution: A true streaming architecture should decouple the generator's lifecycle from the executor's lifecycle.
impa should spawn the generator once, and either:
- Tee/Broadcast the stream to multiple executors concurrently (though this risks CPU resource contention).
- Buffer/Cache the stream using a memory-mapped file or named pipe (FIFO) so the generator only runs once, and the framework simply streams the cached bytes to each sequential executor at maximum I/O speed.
Right now,
impalabruns tasks strictly sequentially. If you look atrun_benchmarksin yourbenchmark.rsfile, the orchestrator loops over each task and callsrun_pipeline, which spawns a fresh instance of both the generator and the executor for every single task.impashould spawn the generator once, and either: