Adapt Burstable Containers to Variable CPU Resources
In the age of cloud-native, container technology is increasingly adopted to deploy cloud applications. Compared with virtual machines, containers are lightweight and flexible in resource management. An important quality-of-service (QoS) class in container management is burstable container, whose resource limits are higher than requests, allowing accessing additional available resources. However, efficiently managing burstable containers is challenging, especially for CPU resources. On the one hand, burstable containers should maintain sufficient concurrency, in the form of threads, to utilize extendable CPU resources. On the other hand, sufficient concurrency leads to suboptimal performance when the CPU allocation is constrained. In this paper, we recommend that the concurrency in burstable containers should always be set to the CPU limit to guarantee extendibility. However, modern operating systems (OSes) fall short of efficiently managing thread oversubscription.First, the CPU scheduler is inefficient for scheduling excessive threads. Second, the existing blocking and non-blocking synchronization are inefficient in synchronizing excessive threads. To this end, we present a user-level adaptive container scheduler and two OS mechanisms, virtual blocking and busy-waiting detection, to avoid inefficiency in managing burstable containers. Experimental results show that our approaches can keep burstable containers efficient while allowing them to take advantage of additional CPUs.
IEEE Transactions on Computers
Digital Object Identifier (DOI)