Assessing the Impact of Library Sharing in Containers-Based Infrastructures
01 September 2017
With the surge in popularity of container-based infrastructures, and microservices gaining further traction as a choice in software design, the logical result is a collection of many, agile software components that need to be run thousands of times, adjusting to a highly dynamic load. An unfortunate consequence of this deconstruction of traditional monolithic services is the need to package the same libraries into many of these containers, exacerbating memory duplication and unnecessarily increasing resource requirements. We consider sharing libraries across containers, and study the impact of such a strategy on overall resource requirements, scheduling, and utilization. Our analysis and simulations suggest significant benefits arising from library sharing. Furthermore, a small fraction of libraries shared between any two containers, on average, is enough to reap most of the benefits, and even naive schedulers, such as a First Fit scheduler, succeed at doing so. We also propose a simple score maximization, mixed-integer linear-programming scheduler for handling bulk request arrivals (such as large jobs composed of many smaller tasks), which compares favorably against state-of-the-art schedulers in these scenarios.