From 6a374f21495c12568e4754800574e6703a0e626f Mon Sep 17 00:00:00 2001 From: Nikola Dipanov Date: Tue, 30 Sep 2014 12:39:22 +0200 Subject: [PATCH] libvirt: Make sure NUMA cell memory is in Kb in XML This patch makes libvirt report memory in Mb (as hardware.VirtNUMATopologyUsage class expects Mb) and that when generating XML we use Kb as this is what libvirt expects by default. Change-Id: Ic4518acf6bcee463009437829646de8c83aff6bf Closes-bug: #1373159 --- nova/tests/virt/libvirt/test_driver.py | 18 ++++++++++-------- nova/virt/libvirt/driver.py | 6 +++--- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/nova/tests/virt/libvirt/test_driver.py b/nova/tests/virt/libvirt/test_driver.py index 2cdf17b1de28..9f4d2933620e 100644 --- a/nova/tests/virt/libvirt/test_driver.py +++ b/nova/tests/virt/libvirt/test_driver.py @@ -1217,7 +1217,7 @@ class LibvirtConnTestCase(test.TestCase): def test_get_guest_config_numa_host_instance_no_fit(self): instance_ref = db.instance_create(self.context, self.test_instance) - flavor = objects.Flavor(memory_mb=1, vcpus=4, root_gb=496, + flavor = objects.Flavor(memory_mb=4096, vcpus=4, root_gb=496, ephemeral_gb=8128, swap=33550336, name='fake', extra_specs={}) @@ -1249,7 +1249,7 @@ class LibvirtConnTestCase(test.TestCase): def test_get_guest_config_numa_host_instance_fit_w_cpu_pinset(self): instance_ref = db.instance_create(self.context, self.test_instance) - flavor = objects.Flavor(memory_mb=1, vcpus=2, root_gb=496, + flavor = objects.Flavor(memory_mb=1024, vcpus=2, root_gb=496, ephemeral_gb=8128, swap=33550336, name='fake', extra_specs={}) @@ -1288,7 +1288,7 @@ class LibvirtConnTestCase(test.TestCase): cells=[hardware.VirtNUMATopologyCell(0, set([0]), 1024), hardware.VirtNUMATopologyCell(1, set([2]), 1024)])) instance_ref = db.instance_create(self.context, self.test_instance) - flavor = objects.Flavor(memory_mb=1, vcpus=2, root_gb=496, + flavor = objects.Flavor(memory_mb=2048, vcpus=2, root_gb=496, ephemeral_gb=8128, swap=33550336, name='fake', extra_specs={}) @@ -1318,7 +1318,8 @@ class LibvirtConnTestCase(test.TestCase): instance_topology.cells, cfg.cpu.numa.cells): self.assertEqual(instance_cell.id, numa_cfg_cell.id) self.assertEqual(instance_cell.cpuset, numa_cfg_cell.cpus) - self.assertEqual(instance_cell.memory, numa_cfg_cell.memory) + self.assertEqual(instance_cell.memory * units.Ki, + numa_cfg_cell.memory) def test_get_guest_config_numa_host_instance_topo(self): instance_topology = objects.InstanceNUMATopology.obj_from_topology( @@ -1327,7 +1328,7 @@ class LibvirtConnTestCase(test.TestCase): hardware.VirtNUMATopologyCell(1, set([2, 3]), 1024)])) instance_ref = db.instance_create(self.context, self.test_instance) - flavor = objects.Flavor(memory_mb=1, vcpus=2, root_gb=496, + flavor = objects.Flavor(memory_mb=2048, vcpus=2, root_gb=496, ephemeral_gb=8128, swap=33550336, name='fake', extra_specs={}) @@ -1368,7 +1369,8 @@ class LibvirtConnTestCase(test.TestCase): instance_topology.cells, cfg.cpu.numa.cells): self.assertEqual(instance_cell.id, numa_cfg_cell.id) self.assertEqual(instance_cell.cpuset, numa_cfg_cell.cpus) - self.assertEqual(instance_cell.memory, numa_cfg_cell.memory) + self.assertEqual(instance_cell.memory * units.Ki, + numa_cfg_cell.memory) def test_get_guest_config_clock(self): self.flags(virt_type='kvm', group='libvirt') @@ -7990,7 +7992,7 @@ class LibvirtConnTestCase(test.TestCase): cell_0 = vconfig.LibvirtConfigCapsNUMACell() cell_0.id = 0 - cell_0.memory = 1024 + cell_0.memory = 1024 * units.Ki cpu_0_0 = vconfig.LibvirtConfigCapsNUMACPU() cpu_0_0.id = 0 cpu_0_0.socket_id = 0 @@ -8005,7 +8007,7 @@ class LibvirtConnTestCase(test.TestCase): cell_1 = vconfig.LibvirtConfigCapsNUMACell() cell_1.id = 1 - cell_1.memory = 1024 + cell_1.memory = 1024 * units.Ki cpu_1_0 = vconfig.LibvirtConfigCapsNUMACPU() cpu_1_0.id = 2 cpu_1_0.socket_id = 1 diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index e1aa22d8fca7..8a0df903843a 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -3670,7 +3670,7 @@ class LibvirtDriver(driver.ComputeDriver): guest_cell = vconfig.LibvirtConfigGuestCPUNUMACell() guest_cell.id = instance_cell.id guest_cell.cpus = instance_cell.cpuset - guest_cell.memory = instance_cell.memory + guest_cell.memory = instance_cell.memory * units.Ki guest_cpu_numa.cells.append(guest_cell) return guest_cpu_numa @@ -3711,7 +3711,7 @@ class LibvirtDriver(driver.ComputeDriver): if not guest_cpu_numa: # No NUMA topology defined for instance vcpus = flavor.vcpus - memory = flavor.memory_mb * 1024 + memory = flavor.memory_mb if topology: # Host is NUMA capable so try to keep the instance in a cell viable_cells_cpus = [] @@ -4824,7 +4824,7 @@ class LibvirtDriver(driver.ComputeDriver): topology = hardware.VirtNUMAHostTopology( cells=[hardware.VirtNUMATopologyCellUsage( cell.id, set(cpu.id for cpu in cell.cpus), - cell.memory) + cell.memory / units.Ki) for cell in topology.cells]) allowed_cpus = hardware.get_vcpu_pin_set()