README.txt
═══════════════════════════════════════════════════════════════
F16 NVMe/ZFS Performance Baseline
Packaged: 2026-03-10T10:34:12-03:00
Hostname: zfs-klara
═══════════════════════════════════════════════════════════════
SUMMARY
───────
Mirror results : mirror_20260306_122723
RAIDZ2 results : raidz2_20260309_102455
Total benchmarks (JSON) : 636
Total metrics (NDJSON) : 318
DIRECTORY STRUCTURE
───────────────────
F16-ZFS-NVMe-Baseline/
├── README.txt ← This file
├── mirror/
│ ├── hardware-info/ ← Baseline snapshot (pre-benchmark)
│ ├── software-info/ ← Baseline snapshot (pre-benchmark)
│ ├── pool-config/ ← Pool creation commands + properties
│ ├── fio-jobs/ ← All 53 .fio job files
│ ├── benchmarks/{seq,rand,latency,mixed}/ ← fio JSON+ output
│ └── metrics/{seq,rand,latency,mixed}/ ← PCP NDJSON time-series
└── raidz2/
└── (same structure)
BENCHMARK MATRIX
────────────────
A. Sequential Throughput : read/write × QD{1,32} × nj{1,4,8,16} × 1M (16 jobs)
B. Random IOPS : randread/randwrite × QD{1,4,16,32} × nj{1,8,16,32} × 4K (32 jobs)
C. Latency : randread/randwrite × QD1 × nj1 × 4K (2 jobs)
D. Mixed 70/30 : randrw × QD16 × nj{1,4,8} × 4K (3 jobs)
Total: 53 jobs × 3 runs = 159 runs per layout
CONFIGURATION
─────────────
fio size : 64G
fio runtime : 180s + 10s ramp
ioengine : libaio, direct=1, time_based=1
ashift : 12
recordsize : 128K (dataset)
volblocksize: 8K (ZVOL)
compression : off
sync : standard
ARC : primarycache=all
FILES
─────
<layout>/benchmarks/<category>/*_runN.json — fio JSON+ (IOPS, BW, latency)
<layout>/benchmarks/<category>/*_runN.txt — fio human-readable summary
<layout>/benchmarks/<category>/*_runN.manifest.json — run metadata + timestamps
<layout>/metrics/<category>/*_runN.ndjson — PCP time-series (CPU, mem, disk, ZFS)
<layout>/pool-config/pool-design.txt — Human-readable pool documentation
<layout>/fio-jobs/*.fio — All fio job definitions
TOOLS
─────
To view metrics in a web dashboard:
python3 metrics_web.py -d F16-ZFS-NVMe-Baseline/ -p 8088
To generate summary tables:
python3 metrics_summary.py <ndjson_file>
To convert NDJSON to CSV/table:
python3 ndjson_to_table.py <ndjson_file>