  While containers efficiently implement the idea of operating-system-level
application virtualization, they are often insufficient to increase the server
utilization to a desirable level. The reason is that in practice many
containerized applications experience a limited amount of load while there are
few containers with a high load. In such a scenario, the virtual memory
management system can become the limiting factor to container density even
though the working set of active containers would fit into main memory. In this
paper, we describe and evaluate a system for transparently moving memory pages
in and out of DRAM and to a NAND Flash medium which is attached through the
memory bus. This technique, called Diablo Memory Expansion (DMX), operates on a
prediction model and is able to relieve the pressure on the memory system. We
present a benchmark for container density and show that even under an overall
constant workload, adding additional containers adversely affects
performance-critical applications in Docker. When using the DMX technology of
the Memory1 system, however, the performance of the critical workload remains
stable.
