  Solid State Drives (SSDs) are a moving target for system designers: they are
black boxes, their internals are undocumented, and their performance
characteristics vary across models. There is no appropriate analytical model
and experimenting with commercial SSDs is cumbersome, as it requires a careful
experimental methodology to ensure repeatability. Worse, performance results
obtained on a given SSD cannot be generalized. Overall, it is impossible to
explore how a given algorithm, say a hash join or LSM-tree insertions,
leverages the intrinsic parallelism of a modern SSD, or how a slight change in
the internals of an SSD would impact its overall performance. In this paper, we
propose a new SSD simulation framework, named EagleTree, which addresses these
problems, and enables a principled study of SSD-Based algorithms. The
demonstration scenario illustrates the design space for algorithms based on an
SSD-based IO stack, and shows how researchers and practitioners can use
EagleTree to perform tractable explorations of this complex design space.
