]> xenbits.xensource.com Git - libvirt.git/commitdiff
libxl: don't hardcode scheduler weight
authorJim Fehlig <jfehlig@suse.com>
Thu, 22 Feb 2018 18:52:56 +0000 (11:52 -0700)
committerJim Fehlig <jfehlig@suse.com>
Wed, 21 Mar 2018 21:12:24 +0000 (15:12 -0600)
Long ago in commit dfa1e1dd53 the scheduler weight was accidentally
hardcoded to 1000. Weight is a setting with no unit since it is
relative to the weight of other domains. If no weight is specified,
libxl defaults to 256.

Instead of hardcoding the weight to 1000, honor any <shares> specified
in <cputune>. libvirt's notion of shares is synonomous to libxl's
scheduler weight setting. If shares is unspecified, defer default
weight setting to libxl.

Removing the hardcoded weight required some test fixup. While at it,
add an explicit test for <shares> conversion to scheduler weight.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
src/libxl/libxl_conf.c
tests/libxlxml2domconfigdata/basic-hvm.json
tests/libxlxml2domconfigdata/basic-pv.json
tests/libxlxml2domconfigdata/cpu-shares-hvm.json [new file with mode: 0644]
tests/libxlxml2domconfigdata/cpu-shares-hvm.xml [new file with mode: 0644]
tests/libxlxml2domconfigdata/moredevs-hvm.json
tests/libxlxml2domconfigdata/multiple-ip.json
tests/libxlxml2domconfigdata/variable-clock-hvm.json
tests/libxlxml2domconfigdata/vnuma-hvm.json
tests/libxlxml2domconfigtest.c

index ea2b0c588f9b9cfa996a3e570989c08c7b80dd5a..0ed914e4f1b38178df553357720c0657e0190305 100644 (file)
@@ -366,7 +366,9 @@ libxlMakeDomBuildInfo(virDomainDefPtr def,
         }
     }
 
-    b_info->sched_params.weight = 1000;
+    if (def->cputune.sharesSpecified)
+        b_info->sched_params.weight = def->cputune.shares;
+
     /* Xen requires the memory sizes to be rounded to 1MiB increments */
     virDomainDefSetMemoryTotal(def,
                                VIR_ROUND_UP(virDomainDefGetMemoryInitial(def), 1024));
index 6fa41f34f9cc221547ea3c831bbdc3017d4a1ba8..ccd5853854b52d6cdda2f3442d9530d7e30a3b39 100644 (file)
@@ -19,7 +19,7 @@
         "device_model_version": "qemu_xen",
         "device_model": "/bin/true",
         "sched_params": {
-            "weight": 1000
+
         },
         "type.hvm": {
             "pae": "True",
index 7e1abd3d6a45859ae0a375c85d708980dfd361ed..0f846daabdb499a64cc2d92e284ce76ec7745b79 100644 (file)
@@ -15,7 +15,7 @@
         "max_memkb": 524288,
         "target_memkb": 524288,
         "sched_params": {
-            "weight": 1000
+
         },
         "type.pv": {
             "bootloader": "pygrub"
diff --git a/tests/libxlxml2domconfigdata/cpu-shares-hvm.json b/tests/libxlxml2domconfigdata/cpu-shares-hvm.json
new file mode 100644 (file)
index 0000000..2e647ea
--- /dev/null
@@ -0,0 +1,89 @@
+{
+    "c_info": {
+        "type": "hvm",
+        "name": "test-hvm",
+        "uuid": "2147d599-9cc6-c0dc-92ab-4064b5446e9b"
+    },
+    "b_info": {
+        "max_vcpus": 4,
+        "avail_vcpus": [
+            0,
+            1,
+            2,
+            3
+        ],
+        "max_memkb": 1048576,
+        "target_memkb": 1048576,
+        "video_memkb": 8192,
+        "shadow_memkb": 12288,
+        "device_model_version": "qemu_xen",
+        "device_model": "/bin/true",
+        "sched_params": {
+            "weight": 1500
+        },
+        "type.hvm": {
+            "pae": "True",
+            "apic": "True",
+            "acpi": "True",
+            "vga": {
+                "kind": "cirrus"
+            },
+            "vnc": {
+                "enable": "True",
+                "listen": "0.0.0.0",
+                "findunused": "False"
+            },
+            "sdl": {
+                "enable": "False"
+            },
+            "spice": {
+
+            },
+            "boot": "c",
+            "rdm": {
+
+            }
+        },
+        "arch_arm": {
+
+        }
+    },
+    "disks": [
+        {
+            "pdev_path": "/var/lib/xen/images/test-hvm.img",
+            "vdev": "hda",
+            "backend": "qdisk",
+            "format": "raw",
+            "removable": 1,
+            "readwrite": 1
+        }
+    ],
+    "nics": [
+        {
+            "devid": 0,
+            "mac": "00:16:3e:66:12:b4",
+            "bridge": "br0",
+            "script": "/etc/xen/scripts/vif-bridge",
+            "nictype": "vif_ioemu"
+        }
+    ],
+    "vfbs": [
+        {
+           "devid": -1,
+            "vnc": {
+                "enable": "True",
+                "listen": "0.0.0.0",
+                "findunused": "False"
+            },
+            "sdl": {
+                "enable": "False"
+            }
+        }
+    ],
+    "vkbs": [
+        {
+            "devid": -1
+        }
+    ],
+    "on_reboot": "restart"
+}
diff --git a/tests/libxlxml2domconfigdata/cpu-shares-hvm.xml b/tests/libxlxml2domconfigdata/cpu-shares-hvm.xml
new file mode 100644 (file)
index 0000000..49085b4
--- /dev/null
@@ -0,0 +1,39 @@
+<domain type='xen'>
+  <name>test-hvm</name>
+  <description>None</description>
+  <uuid>2147d599-9cc6-c0dc-92ab-4064b5446e9b</uuid>
+  <memory>1048576</memory>
+  <currentMemory>1048576</currentMemory>
+  <vcpu>4</vcpu>
+  <cputune>
+    <shares>1500</shares>
+  </cputune>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <clock offset='utc'/>
+  <os>
+    <type>hvm</type>
+    <loader>/usr/lib/xen/boot/hvmloader</loader>
+    <boot dev='hd'/>
+  </os>
+  <features>
+    <apic/>
+    <acpi/>
+    <pae/>
+  </features>
+  <devices>
+    <emulator>/bin/true</emulator>
+    <disk type='file' device='disk'>
+      <driver name='qemu'/>
+      <source file='/var/lib/xen/images/test-hvm.img'/>
+      <target dev='hda'/>
+    </disk>
+    <interface type='bridge'>
+      <source bridge='br0'/>
+      <mac address='00:16:3e:66:12:b4'/>
+      <script path='/etc/xen/scripts/vif-bridge'/>
+    </interface>
+    <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'/>
+  </devices>
+</domain>
index 8f861f34ecfd38deb663863f978635ed12314859..7bfd68bd672c0680095fa05b959ff9e6245da298 100644 (file)
@@ -21,7 +21,7 @@
         "device_model_version": "qemu_xen",
         "device_model": "/bin/true",
         "sched_params": {
-            "weight": 1000
+
         },
         "type.hvm": {
             "pae": "True",
index 4aff61d4b5a25671625886b07fdee4e593f567db..80dca8261171aa70e1b0776e98fe8b1927492268 100644 (file)
@@ -15,7 +15,7 @@
         "max_memkb": 524288,
         "target_memkb": 524288,
         "sched_params": {
-            "weight": 1000
+
         },
         "type.pv": {
             "bootloader": "pygrub"
index 49d0a4330c13d314748b32ecd883de1a91a45228..69be9c64cbe429a0cd068d2d10b0324a53ec8eef 100644 (file)
@@ -21,7 +21,7 @@
         "device_model_version": "qemu_xen",
         "device_model": "/bin/true",
         "sched_params": {
-            "weight": 1000
+
         },
         "type.hvm": {
             "pae": "True",
index 3a5071e1481ab1fc64ed477ae0733e864d5fd14a..3b2fc5f40fe522d66b253598db8decd227b90018 100644 (file)
         "device_model_version": "qemu_xen",
         "device_model": "/bin/true",
         "sched_params": {
-            "weight": 1000
+
         },
         "type.hvm": {
             "pae": "True",
index ea3d2884ef674be7073bfb4be06712e2c5f70525..6eec4c752d6e2c3c5b479e31782fa14038c59a7b 100644 (file)
@@ -192,6 +192,7 @@ mymain(void)
 
     DO_TEST("basic-pv");
     DO_TEST("basic-hvm");
+    DO_TEST("cpu-shares-hvm");
     DO_TEST("variable-clock-hvm");
     DO_TEST("moredevs-hvm");
     DO_TEST("vnuma-hvm");