Server Virtualization: Balancing CPU, Storage and Networking Demands