Various perf optimizations
Add penalties for idle time

This is very naive. Instead, the model should support distinctions
between idle and shutdown.
Huge performance improvements