The document summarizes the mClock algorithm for providing quality of service (QoS) guarantees for storage input/output (IO) resource allocation in virtualized environments. The mClock algorithm uses a combination of weight-based and constraint-based scheduling to dynamically allocate storage IO bandwidth proportional to weights while ensuring reservations and limits are met. It assigns real-time tags to requests based on reservations, limits, and shares to schedule requests and adjusts tags when throughput varies to maintain proportional allocation and meet guarantees.