Adaptive throttling