System performance testing under synchronous I/O workload conditions reveals a critical storage bottleneck.
While average fsync latency remains low (~3.5 ms – 5.5 ms), the storage subsystem suffers from severe
tail latency spikes reaching up to 3.30 seconds (3,296.40 ms).
The primary drive (SanDisk SC128, manufactured Oct 2017) lacks a dedicated DRAM cache and internal multi-channel flash controller.
When sys_fsync() forces page-cache writes to physical NAND, the drive is forced into an inline Read-Modify-Write cycle
and block erasure state, freezing kernel I/O queues for over 3 seconds.
Data parsed from physical kernel synchronous completion metrics (sync block):
| Benchmark Run | IOPS | Mean Sync Latency | Max Sync Latency (Tail Spike) | Physical Cause |
|---|---|---|---|---|
fio_results_run_1.log |
179 IOPS | 5.51 ms | 2,427.60 ms (2.43s) | Initial cache drain; 2.4s NAND erase lockup |
fio_results_run_2.log |
264 IOPS | 3.74 ms | 3,296.40 ms (3.30s) | Worst-case controller GC block erase stall |
fio_results_run_3.log |
280 IOPS | 3.52 ms | 1,501.00 ms (1.50s) | Sustained GC pressure under block exhaustion |
| Aggregate Averages | 241.00 IOPS | 4.25 ms | 3,296.40 ms Peak Spike | Unsuitable for transactional workloads |
armv7l/dev/mmcblk1SC128 (SanDisk Ultra 128GB)0x000003 / 0x5344mq-deadlineext4 on /dev/mmcblk1p2rw, noatimedata=ordered (Default)Modify /etc/fstab to bypass ordered metadata dependencies and extend commit windows:
rw,noatime,data=writeback,barrier=0,commit=60
Add sysctl rules to prevent large cache drops that overload the MicroSD controller:
vm.dirty_background_ratio = 5vm.dirty_ratio = 10
Upgrade critical database/WAL mounts to an ODROID eMMC Module or USB 3.0 NVMe drive featuring internal DRAM buffers.
--fsync=1 runs, measuring the exact time required to issue physical flush commands to non-volatile flash hardware.ext4 filesystem mode where metadata changes are journaled, but file data writes are unordered and written straight to disk, significantly reducing fsync lockups.