if (use_cpumask && virProcessSetAffinity(pid, use_cpumask) < 0)
goto cleanup;
- /* Set scheduler type and priority. */
+ /* Set scheduler type and priority, but not for the main thread. */
if (sched &&
+ nameval != VIR_CGROUP_THREAD_EMULATOR &&
virProcessSetScheduler(pid, sched->policy, sched->priority) < 0)
goto cleanup;
if (qemuProcessSetupIOThreads(vm) < 0)
goto cleanup;
+ VIR_DEBUG("Setting emulator scheduler");
+ if (vm->def->cputune.emulatorsched &&
+ virProcessSetScheduler(vm->pid,
+ vm->def->cputune.emulatorsched->policy,
+ vm->def->cputune.emulatorsched->priority) < 0)
+ goto cleanup;
+
VIR_DEBUG("Setting any required VM passwords");
if (qemuProcessInitPasswords(driver, vm, asyncJob) < 0)
goto cleanup;