Project

General

Profile

Rados QoS

Summary
QoS is a complex topic, with many variations that can be very complex to implement. This blueprint seeks to prototype a relatively simple, but scalable QoS algorithm for storage.

Owners
Syed Billah (Red Hat)
Josh Durgin (Red Hat)

Interested Parties

Current Status
Working on a prototype in ceph

Detailed Description
Try out the dmClock algorithm: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.182.4720

This defines SLOs in terms of IOPS - clients have parameters controlled by higher level policy:
  1. R - reservation (minimum IOPS)
  2. L - limit (maximum IOPS)
  3. W - weight (proportional share of capacity if extra capacity or system oversubscribed)
These would be determined by client configuration for e.g. rbd, rgw, and sent with each OSDOp message in terms of deadlines. The osds would schedule based on these deadlines, plus a few extra pieces of information incorporated into these R, L, and W tags by a client:
  1. delta - the number of IOs this client completed in all OSDs since the last request to the current OSD
  2. rho - the number of IOs this client completed as part of the R (reservation) tag in all OSDs since the last request to the current OSD

This is quite scalable, requiring no global state or aggregation, and reasonably simple to implement.

On the OSD side, the main work is replacing the PrioritizedWorkQueue with one that uses mClock.