← Back to Demo

PAS: Sleep Duration Tracking Simulator

Per-I/O binary feedback (UNDER/OVER) with four update rules — no time measurement needed

PAS Parameters

μs
μs

Trace Input

I/Os
How to collect your own trace ↓

Collecting Your Own I/O Latency Trace

Upload a text file with one I/O latency value per line (unit: μs). Blank lines and non-numeric lines are ignored.

The example below uses blktrace to collect D2C (device-to-completion) latency values:

# 1. Trace block I/O on your NVMe device (10 seconds)
$ blktrace -d /dev/nvme0n1 -o trace -w 10 &

# 2. Run a workload (e.g., 4KB random read, QD=1)
$ fio --name=test --filename=/dev/nvme0n1 --direct=1 \
      --rw=randread --bs=4k --iodepth=1 --numjobs=1 \
      --runtime=10 --time_based

# 3. Parse D2C latency in microseconds
$ blkparse -i trace -f "%a %S %T.%9t\n" | awk '
/^D/ { issue[$2] = $3 }
/^C/ { if ($2 in issue) {
         printf "%.3f\n", ($3 - issue[$2]) * 1000000
         delete issue[$2]
       }
}
' > my_trace.txt

Then upload my_trace.txt above. You can also use any other tracing tool (e.g., bpftrace, biolatency) as long as the output is one latency value (μs) per line.

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 Tunder
-
μs
Avg Tover
-
μs
CPU usage proxy
-
%
Convergence
-
I/Os
Final Duration
-
μs
I/O 499 / 499

Trace vs. PAS Sleep Duration

Gray = device I/O latency (trace), Blue = PAS sleep duration tracking

Adjust Factor Over Time

Multiplicative adjustment applied to sleep duration each I/O. Green band = within ±5% of 1.0

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