Is A Trace-Based Analysis Accurate?
We’re using a trace-gathering tool sourced from Intel to analyze the storage pattern of games. IPEAK is trace-based, which means it records the I/O commands issued at the operating system level.
But how accurate is using a trace? Actually, it's pretty damn good. Look at our results when we trace Iometer during a benchmark session with the following settings:
- # logical cores = workers
- QD=32
- 4 KB transfer size
- 4 KB align
- Fully random
IPEAK: Trace Accuracy
When we look at the trace captured from Iometer, we see that 100% of all accesses are eight sectors in size. This matches exactly the 4 KB setting we specified in Iometer (512 bytes per sector, yielding 4 KB).
Remember that sequential transfers incur zero seek distance. This graph confirms that IPEAK is correctly recording operations, as all the data is random.
This graph is interesting because all of the operations in our captured trace are queued 128-deep. That isn’t a mistake. We set Iometer to run with four workers on our Core i5-2500K, mimicking the workload you'd see from a threaded application issuing concurrent commands. Each worker runs independently, which means that queue depths stack up. That’s why our captured trace reflects the queue depth it's reflecting, despite the fact that we set Iometer to push a queue depth of 32.
We're happy to report that IPEAK-based measurements are extremely accurate, which is why it’s one of our favorite tools for storage evaluation.