New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

extstore: tiered storage #432

Open
wants to merge 1 commit into
base: next
from

Conversation

Projects
None yet
1 participant
@dormando
Copy link
Member

dormando commented Nov 3, 2018

earlier commits added the concept of free_buckets and were able to run
simple tests of tiered device storage.

this commit flattens some of the original code and improves the storage
compactor to handle tiered storage better.

run with: ext_path=/path/f1:64m,ext_path=/path2/f2:128m:compact
creates a 64m file for "Default" pages and a 128m file for compacted
pages. Also works with 'chunked' and 'lowttl'

  • fixes off-by-one preventing first page in each file from being used.

  • adds ext_max_sleep startup option to override sleep time for extstore
    bg threads. chopping this time improves the race condition issues in
    tests.

  • removes page eviction from internal to extstore.

  • removes many calls to extstore's internal maintenance run.

  • storage.c's compactor now also issues page evictions, tallies pages
    rather than looking at summary counts. Evicts based on the free page
    bucket used.

  • removes the "fragmentation slew" calculation from when compaction
    should kick in. Instead of writing early, should wait until we've hit
    the compact_under page limit then start compacting the emptiest pages.

existing tests pass.

TODO:

  • tests specific to tiered storage.
  • compact_under should be a percentage, and a low one (1% or so). Else
    it won't kick in properly.
  • probably a few more logging endpoints and stats counters.
extstore: tiered storage
earlier commits added the concept of free_buckets and were able to run
simple tests of tiered device storage.

this commit flattens some of the original code and improves the storage
compactor to handle tiered storage better.

run with: ext_path=/path/f1:64m,ext_path=/path2/f2:128m:compact
creates a 64m file for "Default" pages and a 128m file for compacted
pages. Also works with 'chunked' and 'lowttl'

- fixes off-by-one preventing first page in each file from being used.
- adds ext_max_sleep starup option to override sleep time for extstore
bg threads. chopping this time improves the race condition issues in
tests.
- removes page eviction from internal to extstore.
- removes many calls to extstore's internal maintenance run.

- storage.c's compactor now also issues page evictions, tallies pages
rather than looking at summary counts. Evicts based on the free page
bucket used.
- removes the "fragmentation slew" calculation from when compaction
should kick in. Instead of writing early, should wait until we've hit
the compact_under page limit then start compacting the emptiest pages.

existing tests pass.

TODO:

- tests specific to tiered storage.
- compact_under should be a percentage, and a low one (1% or so). Else
it won't kick in properly.
- probably a few more logging endpoints and stats counters.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment