sled icon indicating copy to clipboard operation
sled copied to clipboard

[wip] incremental swizzle implementation

Open spacejam opened this issue 5 years ago • 0 comments

This is an incremental new approach of pointer swizzling, replacing #1300 which proved to be a bad approach that caused things to get bogged down. This PR will implement similar things over time, but with an eye toward keeping each commit more-or-less functional instead of the shotgun approach that didn't pan out in the previous attempt.

  • [ ] first priority: paged-out single frag log items stored in a single pointer

    • [x] fuzzy snapshot
    • [ ] trim snapshot
    • [ ] make HeapId single-word
      • [ ] remove LSN from HeapId
    • [ ] remove log pointers for heap items during snapshot creation
    • [ ] make DiskPtr single-word in standard case, moving to a single allocation while it's log + heap
    • [ ] add discriminant to low bits of pagetable entries
    • [x] remove CacheInfo dependencies from segment tracker
    • [ ] page-in fragmented pages on startup
  • [ ] secondary goals

    • [ ] use swizzle discriminant + log coordinate for free entry not yet merged into snapshot
    • [ ] use null for free pages that have been merged into the last snapshot
    • [ ] collapse DiskPtr into inline enum with swizzled boxed coords for log+heap
    • [ ] make disk info inline with pages and frags to avoid the vec allocation
    • [ ] let frags replace single frags for the same key to avoid merges on hot keys
    • [ ] remove update enum from page representation

non-goals for this pr:

  • intermediate node structs are ok for now

spacejam avatar Mar 04 '21 18:03 spacejam