← Back to Demo

PAS: I/O Completion Emulator

Per-I/O binary feedback (UNDER/OVER) with four update rules — sleep misprediction reflected in app-perceived latency

I/O Completion Model

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

PAS Parameters

μs
μs

Trace Input

ms

Update Rules — SR(2nd-to-last, last)

UNDER, UNDER
adjust += UP
(accelerate increase)
0
UNDER, OVER
adjust = 1 − DN
(slight decrease)
0
OVER, UNDER
adjust = 1 + UP
(slight increase)
0
OVER, OVER
adjust −= DN
(accelerate decrease)
0
Avg App Latency
-
μs
Avg Device Time
-
μs
Latency Overhead
-
%
OVER Count
-
I/Os
Final Duration
-
μs
I/O 0 / 0 | 0.0 / 0.0 ms

I/O Completion Emulation

▬ Genuine Device Latency   - - Requested Sleep   ▬ Actual Sleep (sleep + δ)   - - App-Perceived I/O Latency   ■ Oversleep Penalty

Run emulation to see step-by-step log...