Project

General

Profile

Osd - tiering - fine-grained promotion unit

Summary

The default object size is 4M. And the promotion in the current code is done in the object unit. In our performance evaluation, it shows the promotion is a huge overhead of the IO request. This is due to the big promotion size. We propose to use a fine-grained promotion unit. An object is divided into 4k units, called pages. And only the required pages of data of the object is promoted when there is a miss. A bitmap is used to track the page usage of the object.

Owners

  • Zhiqiang Wang (intel)
  • Jian Zhang (intel)
  • Jiangang Duan (intel)

Interested Parties

  • Name (Affiliation)
  • Name (Affiliation)
  • Name

Current Status

Detailed Description

- Divide the object into 4k units. A unit is called a page. Promotion is done on the per page basis. For every object, use a bitmap to track the usage of the pages.
- The bitmap can be saved in the object info metadata. The bitmap is used to track which pages are in the cache tier, which pages are not.
- When the range of the data of an IO request is hit in the cache tier (those bitmap bits are on), the request can be served by the cache tier. Otherwise a promotion is needed.
- When a promotion is needed, it is done in multiple of pages. These pages are replicated on the cache tier after the promotion. The corresponding bits in the bitmap are marked on after the replication. The other pages which are not promoted are leaving as 'holes' in the filestore.
- Flush/evict can be done on a per object or per page basis. If done on a per object basis, all the on-cache-tier pages of the object are flushed to base tier. If done on a per page basis, need to maintain a LRU list of all the pages.

Work items

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