mclock · shipping · also mClock I/O scheduler

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

  1. Gulati, Merchant and Varman. mClock: Handling Throughput Variability for Hypervisor IO Scheduling. OSDI 2010, sections 2.1, 3 and 3.2. (accessed 2026-11-03)
  2. Ceph Reef: OSD Config Reference, Subtleties of mClock and Caveats (accessed 2026-11-03)
  3. Ceph Reef: mClock Config Reference, client types and profiles (accessed 2026-11-03)

Further reading

  1. Hesela: Sharing an SSD: who pays for the slowdown? (accessed 2026-10-31)
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.

JSON: /data/terms/mclock.json

Published by Hesela team · Updated

Report a correction · Editorial standards · Reuse guidance

Cite this page
Hesela team. mClock. Hesela. 2026-11-03. https://hesela.dev/terms/mclock/