Per-I/O binary feedback (UNDER/OVER) with four update rules — sleep misprediction reflected in app-perceived latency
Each I/O: wake_time = sleep_duration + cs_overhead (δ) UNDER (device_time > wake_time): app wakes before device completes app_latency = device_time (polls until done — correct latency) measured_io = device_time OVER (device_time ≤ wake_time): device finishes while app sleeps app_latency = wake_time (wasted time — overslept) measured_io = wake_time (inflated!) PAS uses only binary UNDER/OVER → no time-based feedback → no positive feedback loop
▬ Genuine Device Latency - - Requested Sleep ▬ Actual Sleep (sleep + δ) - - App-Perceived I/O Latency ■ Oversleep Penalty