  External fragmentation of physical memory occurs when adjacent differently
sized regions of allocated physical memory are freed at different times,
causing free memory to be physically discontiguous. It can significantly
degrade system performance and efficiency, such as reducing the ability to use
huge pages, a critical optimization on modern large-memory system. For decades
system developers have sought to avoid and mitigate fragmentation, but few
prior studies quantify and characterize it in production settings.
  Moreover, prior work often artificially fragments physical memory to create
more realistic performance evaluations, but their fragmentation methodologies
are ad hoc and unvalidated. Out of 13 papers, we found 11 different
methodologies, some of which were subsequently found inadequate. The importance
of addressing fragmentation necessitates a validated and principled
methodology.
  Our work fills these gaps in knowledge and methodology. We conduct a study of
memory fragmentation in production by observing 248 machines in the Computer
Sciences Department at University of Wisconsin - Madison for a week. We
identify six key memory usage patterns, and find that Linux's file cache and
page reclamation systems are major contributors to fragmentation because they
often obliviously break up contiguous memory. Finally, we create and\'uril, a
tool to artificially fragment memory during experimental research evaluations.
While and\'uril ultimately fails as a scientific tool, we discuss its design
ideas, merits, and failings in hope that they may inspire future research.
