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....@jp.fujitsu.com>
---
 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@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to