Skip to content

trace benchmark support #119

@jamesmarkchan

Description

@jamesmarkchan

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:

  1. Time - offset in nanoseconds from the start of trace
  2. Direction - Read (0) or Write (1)
  3. Offset - the starting byte on the disk
  4. 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.

  1. replay speed options:
    • real-time
    • ASAP - ignore idle time between request
  2. visualization - heatmap or IOPS overtime
  3. timeline indicator - a know showing the progress of where we are in the trace replay
  4. 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:

  • MappedByteBuffer could 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions