mClock
mClock is an I/O scheduling algorithm that combines minimum reservations, proportional weights and maximum limits.
Requests receive separate reservation, limit and share tags; dispatch alternates between satisfying constraints and proportional service. Admission control must establish that reservations fit available capacity. [1]
If throughput falls below the aggregate reservation, the original paper allocates service in proportion to reservations; a zero-reservation VM can starve despite its positive weight. Admission-time feasibility is therefore not an unconditional guarantee under later capacity loss. [1]
Weight-based allocation includes service already received under reservation; a reservation is not a bonus added to a separate weighted entitlement. [2]
Ceph Reef's profiles configure service classes for client I/O, background recovery and background best-effort work. Their capacity-dependent settings are not per-application latency promises. [3]
The paper's distributed extension, dmClock, carries service-accounting information with requests. Independent local queues should not be mistaken for that cluster-wide accounting. [1] Ceph documents separate queues per OSD shard and loss of scheduler control after transfer to the operation sequencer. [2]
The original prototype batches nearby requests to improve locality, which can delay reservation service over short intervals. Its throughput reservation is not a deadline for every individual completion. [1]
The paper's Little's-law sizing example concerns average latency, not p99 or individual completion deadlines; the linked fluid arithmetic does not simulate request completion times. [1]
Relations
- related
- I/O scheduler, Slowdown fairness, Queue depth
Advantages
- Reservation, weight and limit provide separate controls for minimum service, relative sharing and a service ceiling. [2]
Limitations
- An OSD shard's queue does not coordinate its scheduling state with other shards, and dequeued operations are outside that queue's control. [2]
- The original overload policy can starve a zero-reservation VM even when its weight is positive. [1]
Citations
- Gulati, Merchant and Varman. mClock: Handling Throughput Variability for Hypervisor IO Scheduling. OSDI 2010, sections 2.1, 3 and 3.2.
- Ceph Reef: OSD Config Reference, Subtleties of mClock and Caveats
- Ceph Reef: mClock Config Reference, client types and profiles
Further reading
Sources & caveats
- Algorithm publication and version-scoped Ceph documentation; not a benchmark of a contemporary SSD.
- The linked two-client fluid example is Hesela arithmetic, not a request-level mClock or dmClock implementation.