Virtual services: A new abstraction for server consolidation
Abstract
Modern server operating systems (OS’s) do not address the issue of interference between competing applications. This deficiency is a major road-block for Internet and Application Service Providers who want to multiplex server resources among their business clients. To insulate applications from each other, we introduce Virtual Services (VSs). Besides providing per-service resource budgets, VSs drastically reduce cross-service interference in the presence of shared backend services, such as databases and name services. VSs provide dynamic per-service resource partitioning and management in a manner completely transparent to applications. To accomplish this goal, we introduce a kernel-based work classification mechanism called gates. Gates track work that propagates from one service to another and are configured by the system administrator via simple rules. They automate the binding of processes and sockets to VSs, and ensure that any work done on behalf of a VS, even if it is done by shared services, is charged to the resource budget of the VS that requested it. Using our experimental Linux 2.0.36-based implementation we applied them effectively to co-hosted Web servers. Thus, nearly eliminating performance interference between the co-hosted sites.