Skip to content
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

generational rewriting (IO locality tracks) #450

Open
spacejam opened this issue Nov 25, 2018 · 0 comments
Open

generational rewriting (IO locality tracks) #450

spacejam opened this issue Nov 25, 2018 · 0 comments
Labels

Comments

@spacejam
Copy link
Owner

we have an opportunity to be smarter about locality when rewriting pages. If we 2 or more IoBufs structures for different generations/tracks, we could avoid rewriting data that is mostly being merged into base nodes.

This is mostly a spitball issue for different ideas and thoughts on the constraints.

Random thoughts:

  • Give each track its own IoBufs struct
  • put replaces on one track, links on another, maybe have rewrite counters on pages for placement in one of several more mature tracks
  • during recovery, we could zip along all levels/tracks/generations in a single pass, merging updates together. replace the current Lsn byte counter with a logical counter, so we know when we hit the edge while zipping along the N levels/generations/tracks
  • periodic fsync'ing on segments becomes pretty much mandatory, as more mature generations will fill up more slowly, and block recovery nevertheless.
  • low water mark tracking needs to happen per-track
  • for each track, keep the highest reserved ID stored in-memory as well as the highest ID fsync'ed
  • to make_stable(ID), we need to iterate over all tracks and ensure that the highest fsync'ed ID is either above the given ID, or that the highest fsync'ed ID is the same as the highest reserved ID.
  • to mark_interval, provide (track, highest reserved ID, highest synced ID) and set the current low water mark to the lowest synced ID among tracks for which highest reserved != highest synced
@spacejam spacejam added the spec label Nov 25, 2018
@spacejam spacejam changed the title generational rewriting generational rewriting (IO locality tracks) Jan 4, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant