-
Notifications
You must be signed in to change notification settings - Fork 5
Open
Labels
Description
To date we only support synthetic benchmarks.
trace benchmarking uses recorded real world app data to be replayed for measuring realistic performance of the drive.
Tools such as PCMark 10, Fio and Storage Executive has support for trace benchmarking.
Fio has a binary iolog format which would be a good initial format to support. The fields are believed to be:
- Time - offset in nanoseconds from the start of trace
- Direction - Read (0) or Write (1)
- Offset - the starting byte on the disk
- Length - size of the request (eg 4096 bytes)
a potential interface might be a tab to separate the synthetic vs trace controls. maybe reuse graph or start a new one dedicated for handling traces.
- replay speed options:
- real-time
- ASAP - ignore idle time between request
- visualization - heatmap or IOPS overtime
- timeline indicator - a know showing the progress of where we are in the trace replay
- drift monitor - indicator showing if drive is falling behind the trace's original timing
drive scoring:
| metric | calculation | notes |
|---|---|---|
| fidelity score | (trace duration / replay time ) x 100 | in real mode less than 100 indicates lag |
| 99th percentile | time below whihc 99% of I/O completions fall | captures stuttering? |
| normalized bw | avg mb/s during active io periods | helps compare drives across different traces |
| wat time ratio | percentage of time cpu is waiting for I/O to finish | high % indicates disk is a bottle neck for that workload |
implementation notes:
MappedByteBuffercould be used for offset-based reading and writing.- public traces usually come in these formats:
- Fio Binary/ASCII iolog
- SNIA/IOTTA (CSV)
- Blktrace (linux binary)
- threading
- default threading to 32
- make configurable
- use dispatcher thread to launch from a thread pool of n threads