Observe PAS algorithm behavior through simulator and emulator
2026-1 Systems TechnologyBoth tools visualize PAS algorithm behavior, but the key difference lies in whether sleep decisions affect the next I/O's observed latency.
| Simulator | Emulator | |
|---|---|---|
| Input | Pre-defined I/O latency trace | Pre-defined I/O latency trace |
| I/O Latency | Uses trace values as-is (independent of sleep decisions) |
On oversleep, observed latency reflects sleep time |
| Feedback Loop | None — longer sleep doesn't change the next trace latency | Present — excessive sleep → oversleep → increased observed latency → affects next decision |
| Purpose | Verify PAS tracking ability: how well does it follow the given trace? | Verify PAS real behavior: how does the algorithm react when oversleep actually occurs? |
| Shelving | Cannot observe (no feedback) | Observable — shelving can be seen in the LHP emulator |
[Simulator]
trace: 50us, 50us, 10us, 10us, ... (fixed input)
PAS: 40us, 45us, 48us, 30us, ... (sleep decisions)
longer sleep doesn't change trace
[Emulator]
trace: 50us, 50us, 10us, 10us, ... (actual device latency)
PAS: 40us, 45us, 48us, 30us, ... (sleep decisions)
↓ step-down occurs
sleep=48us > device=10us → oversleep!
→ app observed latency = 48us + cs_overhead (not the actual 10us)
→ this inflated value affects the next PAS decision
First check PAS's basic tracking behavior with the simulator, then compare oversleep effects with the emulator using the same trace.
Feedback loop: None.
See how well PAS tracks a given latency trace.
Adjust parameters (UP, DN, initial value) and observe convergence speed.
Feedback loop: Present.
Oversleep is reflected in observed latency.
Compare with the simulator on step-down traces to see the difference.
After observing PAS behavior, explore the LHP emulator to see the problems with existing hybrid polling and compare with PAS.
Part 3: LHP Emulator → Observe LHP's epoch-based adjustment and latency shelving problem