Research notes / SSD scheduling
Sharing an SSD: who pays for the slowdown?
Published / Source review and worked arithmetic
Measure each workload alone and together, then keep both relative slowdown and absolute latency. Equal treatment can still leave every workload unacceptably slow.
On this page6 sections
A queue is not a private flash channel
MQSim models separate host queues feeding shared controller and flash resources. Request fetching, address translation, caches and backend scheduling can all affect interference. A limit at one stage does not describe every later stage. Its evaluation distinguishes measurements on commercial devices from simulated resource contention. [2, sections 3.1, 4 and 6.1]
Linux's blk-mq still manages requests between userspace and the device driver. It has software staging and hardware dispatch queues; an I/O scheduler may reorder requests before dispatch. Selecting none does not remove that entire path. Thus, NVMe does not inherently mean every application bypasses the operating system. [4]
What FLIN actually tested
FLIN's four-device experiment reports unequal slowdowns during concurrent trace replay. The proposed scheduler's evaluation instead uses MQSim with four-flow workload mixes. Its modeled SSD has a 480 GB user capacity, PCIe 3.0 and NVMe 1.2. These are different evidence sets. [1, sections 2.2 and 6]
The design addresses request intensity, access pattern, read/write mix and garbage collection. It reorders flash transactions, arbitrates by host-assigned priorities, then balances read, write and maintenance waiting. It is a controller scheduling proposal, not a host setting that enables isolation on an arbitrary SSD. [1, sections 3-5]
The related MQSim validation used four devices and estimated internal parameters. Matching selected measured workloads is useful evidence for a model, but cannot validate every firmware generation, workload or latency percentile. Its preparation model also tracks page state and cache history. See SSD preparation and steady-state checks. [2, section 5 and Appendix A]
Name the denominator before comparing ratios
For equal-priority flows, FLIN uses S_i = mean_shared_i / mean_alone_i and F = min(S_i) / max(S_i). Its response-time weighted speedup is WS = sum(1 / S_i). Means use matching timing boundaries. [1, equations 1, 2 and 11]
Do not substitute the Perseus workload prediction bound for an isolated mean. Nor is an average of individual request ratios automatically the ratio of two means. Identify the population and aggregation first.
Constructed two-flow examples, not drive measurements. Each cell lists A then B. Every latency is a mean in microseconds; the ratios are dimensionless. The same isolated means apply to every row.
| Scenario | Alone, us | Shared, us | Slowdowns | F | Max S | WS |
|---|---|---|---|---|---|---|
| Equal relative slowdown | 100 / 400 | 200 / 800 | 2 / 2 | 1 | 2 | 1 |
| Equally much slower | 100 / 400 | 2000 / 8000 | 20 / 20 | 1 | 20 | 0.1 |
| Equal absolute latency | 100 / 400 | 800 / 800 | 8 / 2 | 0.25 | 8 | 0.625 |
The first two rows both have F = 1. Yet every shared mean in the second is ten times larger. In the last row both flows take 800 us, but A slowed by eight times and B by twice: F = 0.25. Equal absolute latency and equal relative slowdown answer different questions.
One flow alone always gives F = 1 under this formula, however poor its latency. Adding or removing flows also changes the meaning of a sum such as WS. Preserve the flow set and report absolute means, tail percentiles and achieved throughput separately. These examples establish arithmetic distinctions, not which scheduler a real system should choose.
Executable examples and tests run without dependencies or device access. Run the downloaded test beside the module with node --test ssd-fairness.test.mjs.
The earlier FIOS experiment changed the filesystem too
FIOS explored host-side scheduling with timeslices, read preference, concurrency and deliberate anticipation. Waiting briefly can protect a task whose next request has not arrived; excessive idling can waste parallelism. Evaluation covered three SSDs and a CompactFlash device, including application workloads. [3, sections 3-6]
The setup matters: its prototype used Linux 2.6.33.4, patched handling of synchronous writes, reduced ext4 timestamp precision to seconds and disabled journaling. The authors state these changes explicitly. Treat the result as evidence for that experimental configuration, not as a production tuning recipe or proof that disabling journaling is harmless. [3, section 5]
FIOS's concurrent-efficiency metric sums normalized application throughputs; FLIN's WS above sums inverse response-time slowdowns. Do not pool them into a single performance percentage. [3, section 6, equation 2] [1, equation 11]
A useful shared-device test
Our recommended comparison keeps the same device, firmware, workload definitions, priority policy, timing boundary and preparation procedure. Run each flow alone, then the chosen combination, recording how each run began. Repeating a file image does not necessarily restore controller state.
- Preserve per-flow arrivals, completions, errors and unfinished requests. Explain whether arrivals are independent of completions or slowed by them.
- Record request sizes, read/write mix, address ranges, achieved concurrency, occupancy and thermal behavior. Keep host and device timing distinct.
- Repeat comparable runs and vary run order. Show variation between runs; do not treat millions of dependent requests as millions of independent trials.
- Specify both relative-sharing and absolute service objectives. Report timeouts and dropped work alongside percentiles instead of silently excluding them.
A shared mean alone cannot reveal the isolated denominator or uniquely identify garbage collection, translation-cache contention or host scheduling as its cause. A causal claim needs controlled changes or additional instrumentation. No hardware experiment or FLIN replication was performed for this review.
Continue with arrival models and timing populations. Corpus: slowdown fairness and inter-flow interference.
Primary sources
- Tavakkol et al. FLIN: Enabling Fairness and Enhancing Performance in Modern NVMe Solid State Drives. ISCA 2018, sections 2.2-6.
- Tavakkol et al. MQSim: A Framework for Enabling Realistic Studies of Modern Multi-Queue SSD Devices. FAST 2018, sections 3-6 and Appendix A.
- Stan Park and Kai Shen. FIOS: A Fair, Efficient Flash I/O Scheduler. FAST 2012, sections 3-6.
- Linux kernel documentation: Multi-Queue Block IO Queueing Mechanism, operation, schedulers and hardware dispatch queues.
Reviewed 2026-10-20 UTC. Paper methods, equations and consequential setup choices checked in full text. Historical results are not current product rankings. Example code: CC0. Source publications retain their original rights.