All the code is self contained under the page_grouping subdirectory and is under the llsm::pg namespace so that it does not interfere with the existing code. There are also some new experiment configurations that I put under scripts/pg.
A general overview of what is where:
debug: Code for standalone executables that help with debugging. Useful to keep around in case we need it later on.
persist: Code related to reading/writing pages to/from disk. This directory contains adapted copies of some existing code in LLSM (the page, packed map, physical page ID (now segment ID), file (now segment file)).
plr: Implementation of piecewise linear regression
tests: Tests specifically for the page grouping prototype
tools: Contains the "page shuffling" tool we need for our benchmarks
manager.h and manager_*.cc: The primary read, scan, write logic
segment_builder.h/.cc: The logic for building segments using the piecewise linear regression code
The prototype relies on some dependencies outside page_grouping (the TLX B+Tree, some utils, and the page memory allocator under bufmgr).
There's a lot of code; I have not added many comments because the interfaces may change. I'd say the most important files to look over are the manager related files.
All the code is self contained under the
page_grouping
subdirectory and is under thellsm::pg
namespace so that it does not interfere with the existing code. There are also some new experiment configurations that I put underscripts/pg
.A general overview of what is where:
debug
: Code for standalone executables that help with debugging. Useful to keep around in case we need it later on.persist
: Code related to reading/writing pages to/from disk. This directory contains adapted copies of some existing code in LLSM (the page, packed map, physical page ID (now segment ID), file (now segment file)).plr
: Implementation of piecewise linear regressiontests
: Tests specifically for the page grouping prototypetools
: Contains the "page shuffling" tool we need for our benchmarksmanager.h
andmanager_*.cc
: The primary read, scan, write logicsegment_builder.h/.cc
: The logic for building segments using the piecewise linear regression codeThe prototype relies on some dependencies outside
page_grouping
(the TLX B+Tree, some utils, and the page memory allocator underbufmgr
).There's a lot of code; I have not added many comments because the interfaces may change. I'd say the most important files to look over are the
manager
related files.cc @andreaskipf @mmarkakis