# NVMe Benchmark: Pre-Firmware Update (GXA7401Q) > **Date**: 2026-04-02 10:35 CET > **Device**: Samsung PM9A1 (MZVL2512HCJQ-00B00), 512GB > **Serial**: S675NF0R703667 > **Firmware**: GXA7401Q (pre-update) > **OS**: Manjaro Linux, kernel 6.12, KDE 6.5.6 > **NVMe slot**: /dev/nvme0n1 (root drive) ## SMART Health Data | Metric | Value | |--------|-------| | Critical Warning | 0 (healthy) | | Temperature | 51°C (Sensor 2: 64°C) | | Available Spare | 100% | | Available Spare Threshold | 10% | | Percentage Used | 19% | | Data Units Read | 17.97 TB | | Data Units Written | 94.19 TB | | Host Read Commands | 683,328,216 | | Host Write Commands | 1,651,377,088 | | Controller Busy Time | 9,265 min | | Power Cycles | 884 | | Power On Hours | 4,926 h (~205 days) | | Unsafe Shutdowns | 88 | | Media Errors | 0 | | Error Log Entries | 0 | ## hdparm Results | Test | Throughput | |------|-----------| | Cached Reads | 7,349.97 MB/sec | | Buffered Disk Reads | 741.99 MB/sec | ## fio Benchmarks (4K block, libaio, iodepth=32, 30s per test) ### Sequential Read | Metric | Value | |--------|-------| | Bandwidth | 1,554 MiB/s (1,630 MB/s) | | IOPS | 398,000 | | Avg Latency | 80.16 µs | | P99 Latency | 128 µs | | P99.9 Latency | 186 µs | ### Sequential Write | Metric | Value | |--------|-------| | Bandwidth | 1,305 MiB/s (1,368 MB/s) | | IOPS | 334,000 | | Avg Latency | 95.53 µs | | P99 Latency | 163 µs | | P99.9 Latency | 255 µs | ### Random Read | Metric | Value | |--------|-------| | Bandwidth | 1,409 MiB/s (1,477 MB/s) | | IOPS | 361,000 | | Avg Latency | 88.42 µs | | P99 Latency | 141 µs | | P99.9 Latency | 200 µs | ### Random Write | Metric | Value | |--------|-------| | Bandwidth | 1,135 MiB/s (1,190 MB/s) | | IOPS | 291,000 | | Avg Latency | 109.78 µs | | P99 Latency | 190 µs | | P99.9 Latency | 334 µs | ### Random Read/Write (70/30) | Metric | Read | Write | |--------|------|-------| | Bandwidth | 919 MiB/s (964 MB/s) | 394 MiB/s (413 MB/s) | | IOPS | 235,000 | 101,000 | | Avg Latency | 94.72 µs | 95.05 µs | | P99 Latency | 149 µs | 149 µs | ## Test Configuration ```text fio-3.41 Block size: 4096B IO Engine: libaio IO Depth: 32 Direct IO: yes Runtime: 30s per test File size: 1GiB Directory: /tmp (on NVMe root drive) ``` ## Assessment - Drive health is good: 0 media errors, 0 error log entries, 100% spare - 19% endurance used after ~205 days powered on (within normal range) - Sequential performance consistent with PCIe 4.0 x4 NVMe expectations - Random IOPS strong for a client-grade TLC SSD - Temperature under load: 51-64°C (well within spec) ## Firmware Update Applied > **Date**: 2026-04-02 10:51 CET ### Key Discovery: Firmware Naming Convention | Suffix | Type | Model Suffix | |--------|------|-------------| | `GXA***1Q` | Non-SED | `00B00` (our drive) | | `GXA***2Q` | SED | `00B07` | Our drive (MZVL2512HCJQ-**00B00**) requires `GXA7801Q`, NOT `GXA7802Q`. The OVH mirror only hosts `GXA7802Q` (SED variant) which was rejected as "Invalid Firmware Image". ### Correct Firmware Source - **Repository**: `lolyinseo/samsung-nvme-firmware` (GitHub, 199 stars) - **File**: `PM9A1/ASUS/GXA7801Q/GXA7801Q_20221102.bin` - **Size**: 2,097,152 bytes (2.0 MiB) - **SHA256**: `76ad2b0c35581cb71bd4c5a5fd358a15c4432aa38e9e983acc2349d2b24b5a11` ### Update Process (all succeeded) ```bash # Step 1: Download to controller SRAM sudo nvme fw-download --fw=/tmp/GXA7801Q.bin /dev/nvme0n1 # → Firmware download success # Step 2: Install to slot 2 (preserve original in slot 1) sudo nvme fw-commit -s 2 -a 0 /dev/nvme0 # → Success committing firmware action:0 slot:2 # Step 3: Activate slot 2 sudo nvme fw-commit -s 2 -a 2 /dev/nvme0 # → Success committing firmware action:2 slot:2 # Step 4: Reboot to apply sudo reboot ``` ## Next Steps - [ ] Reboot system to activate GXA7801Q firmware - [ ] Verify firmware version with `nvme list` - [ ] Re-run identical benchmarks post-update - [ ] Compare results in `docs/tech/nvme-benchmark-post-gxa7801q.md`