mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
qemu: Set emulator thread scheduler only after QEMU starts
If the scheduler is set before vCPU0 cannot be moved into its cpu,cpuacct cgroup. While it is not yet known whether this is a bug or not, it makes sense for us to do that later as otherwise the scheduler would be inherited by vCPU and I/O Threads even when they do not have any such setting specified. Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
This commit is contained in:
parent
b3908d2efb
commit
c67a3c0fc3
@ -2658,8 +2658,9 @@ qemuProcessSetupPid(virDomainObjPtr vm,
|
||||
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;
|
||||
|
||||
@ -6773,6 +6774,13 @@ qemuProcessLaunch(virConnectPtr conn,
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user