Workload-aware VM Scheduling on Multi-core Systems