Now, qemu guest's default cpu model is qemu32/64 and it can be configured per domain. In some case, host-model mode is suitable for getting enough performance in the guest because of features from cpu spec. This patch adds a config option to qemu.conf to use 'host-model' mode as default and allow users to use host-model mode in domains on a host. This is useful because - Guest owners don't need to touch their domain's config. - An administrator can reduce an item in their checklist for VM performance and guarantee all guests should run in the best performance. Signed-off-by: Ken ICHIKAWA <ichikawa.ken@xxxxxxxxxxxxxx> --- src/qemu/qemu.conf | 7 +++++++ src/qemu/qemu_command.c | 6 ++++++ src/qemu/qemu_conf.c | 4 ++++ src/qemu/qemu_conf.h | 1 + 4 files changed, 18 insertions(+) diff --git a/src/qemu/qemu.conf b/src/qemu/qemu.conf index dd853c8..5f60237 100644 --- a/src/qemu/qemu.conf +++ b/src/qemu/qemu.conf @@ -401,3 +401,10 @@ # Defaults to -1. # #seccomp_sandbox = 1 + + +# Use 'host-model' for cpu mode when cpu is not defined in +# domain xml file. +# 1 = on, 0 = off(default). +# +#make_default_cpu_host_model = 1 diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 1e96982..8fdac2d 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -4111,6 +4111,12 @@ qemuBuildCpuArgStr(const struct qemud_driver *driver, else default_model = "qemu64"; + if (def->cpu == NULL && driver->makeDefaultCPUHostModel){ + if (VIR_ALLOC(def->cpu) < 0) + goto no_memory; + def->cpu->mode = VIR_CPU_MODE_HOST_MODEL; + } + if (def->cpu && (def->cpu->mode != VIR_CPU_MODE_CUSTOM || def->cpu->model)) { virCPUCompareResult cmp; diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index dc4d680..92b9c38 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -575,6 +575,10 @@ int qemudLoadDriverConfig(struct qemud_driver *driver, CHECK_TYPE("seccomp_sandbox", VIR_CONF_LONG); if (p) driver->seccompSandbox = p->l; + p = virConfGetValue(conf, "make_default_cpu_host_model"); + CHECK_TYPE("make_default_cpu_host_model", VIR_CONF_LONG); + if (p) driver->makeDefaultCPUHostModel = p->l; + virConfFree(conf); return 0; } diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h index 2c7f70c..b0a76f4 100644 --- a/src/qemu/qemu_conf.h +++ b/src/qemu/qemu_conf.h @@ -156,6 +156,7 @@ struct qemud_driver { int keepAliveInterval; unsigned int keepAliveCount; int seccompSandbox; + unsigned int makeDefaultCPUHostModel; }; typedef struct _qemuDomainCmdlineDef qemuDomainCmdlineDef; -- 1.7.11.7 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list