提交 c67a3c0f 编写于 作者: M Martin Kletzander

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: NMartin Kletzander <mkletzan@redhat.com>
上级 b3908d2e
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册