Project

General

Profile

Rbd - client side caching enhancements (part I)

Rationale

RBD cache currently supports DRAM as the only option for caching. The proposal is to enhance the RBD caching layer to support "pluggable" non-volatile storage backends. Also proposed is an extension to support RBD cache partitioning (among random and sequential streams, or among competing apps with differing access rates, etc).

This enhancement has been discussed at the 2015 Ceph hackathon and also at various meetups later on with the Ceph/RBD core. With DRAM being the only RBD caching option, content cacheability is limited by the size of DRAM - proposal here is to be able to plug in SSD backends to address the "size" limitation, enable cache tiering and allow integration of 3rd party software caching solutions such as Intel CAS that make use of the caching hierarchy intelligently.

With Linux Containers becoming common deployment vehicle, eliminating RBD cache size limitation for per-client caching should help improve access latency with the added density. We see interest in this uplift from telco service providers for improving access latency for the VDI, media streaming, db workloads.

Assumptions/Requirements

  • This blueprint proposes RBD plumbing changes to plug in alternate caching backends
  • Public RBD interfaces are not to change
  • Shared RBD cache implementation is proposed as a "Part II" extension to this blueprint

Owners

  • Tushar Gohad (Intel)
  • Stephen Blinick (Intel)
  • Anjaneya Chagam (Intel)

Interested Parties

  • Telco service providers- VDI, media streaming workloads

Current Status

RBD cache currently supports DRAM as the only option for caching - there is no plumbing for plugging in alternate caching backends.

Work items

Rework existing RBD caching infrastructure to support pluggable caching modules.
Add a simple SSD-based and Intel CAS-based backend as sample caching modules.

Coding tasks

  1. Task 1
  2. Task 2
  3. Task 3

Build / release tasks

  1. Task 1
  2. Task 2
  3. Task 3

Documentation tasks

  1. Task 1
  2. Task 2
  3. Task 3

Deprecation tasks

  1. Task 1
  2. Task 2
  3. Task 3