Abstract

Virtual Machines (VMs) running on a Symmetric Multiprocessors (SMP) are called SMP VMs. Operating System primitives can be easily applied directly to the virtualized environment. However, virtualization disrupts the basis of spinlock synchronization in the guest operating system. In non-virtualized environment lock-holder thread never gets pre-empted assuring that lock-waiter thread never gets scheduled before lock-holder. In virtualized environment scheduler is completely unaware of the association between Virtual CPUs (VCPUs). Scheduler may schedule VCPU executing lock-waiter thread before lock-holder VCPU or it may pre-empt lock-holder VCPU. This violates the most basic primitive of Operating System and causes problems like VCPU stacking due to which VCPUs of the same domain are stacked on the run queues of the same physical processor. To address this problem, the solution of co-scheduling is proposed. In co-scheduling all the VCPUs of a domain are scheduled at the same time or none of them is scheduled. This approach suffered from the drawbacks like CPU fragmentation and priority inversion. Our solution proposes a dynamic scheduler that is completely aware of the concurrency of the domain. Rather than co-scheduling every VCPU of the domain, we are relaxing the constraint on co-scheduling. Our solution proposes co-scheduling only if concurrency degree θ of domain is greater than threshold value δ.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call