Skip to content

Commit ffc95fe

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Power on cores for isolated emulator threads" into stable/2023.1
2 parents 273ecae + 0d0dff8 commit ffc95fe

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

nova/tests/functional/libvirt/test_power_manage.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,26 @@ def test_create_server_with_emulator_threads_isolate(self):
147147
self.assertTrue(
148148
numa_topology.cpu_pinning.isdisjoint(
149149
numa_topology.cpuset_reserved))
150-
# FIXME(artom) We've not actually powered on the emulator threads core
150+
self._assert_cpu_set_state(numa_topology.cpuset_reserved,
151+
expected='online')
152+
153+
def test_start_stop_server_with_emulator_threads_isolate(self):
154+
server = self._create_server(
155+
flavor_id=self.isolate_flavor_id,
156+
expected_state='ACTIVE')
157+
# Let's verify that the pinned CPUs are now online
158+
self._assert_server_cpus_state(server, expected='online')
159+
instance = objects.Instance.get_by_uuid(self.ctxt, server['id'])
160+
numa_topology = instance.numa_topology
161+
# Make sure we've pinned the emulator threads to a separate core
162+
self.assertTrue(numa_topology.cpuset_reserved)
163+
self.assertTrue(
164+
numa_topology.cpu_pinning.isdisjoint(
165+
numa_topology.cpuset_reserved))
166+
self._assert_cpu_set_state(numa_topology.cpuset_reserved,
167+
expected='online')
168+
# Stop and assert we've powered down the emulator threads core as well
169+
server = self._stop_server(server)
151170
self._assert_cpu_set_state(numa_topology.cpuset_reserved,
152171
expected='offline')
153172

nova/virt/libvirt/cpu/api.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ def power_up(instance: objects.Instance) -> None:
8282
return
8383

8484
cpu_dedicated_set = hardware.get_cpu_dedicated_set_nozero() or set()
85-
pcpus = instance.numa_topology.cpu_pinning
85+
pcpus = instance.numa_topology.cpu_pinning.union(
86+
instance.numa_topology.cpuset_reserved)
8687
powered_up = set()
8788
for pcpu in pcpus:
8889
if pcpu in cpu_dedicated_set:
@@ -102,7 +103,8 @@ def power_down(instance: objects.Instance) -> None:
102103
return
103104

104105
cpu_dedicated_set = hardware.get_cpu_dedicated_set_nozero() or set()
105-
pcpus = instance.numa_topology.cpu_pinning
106+
pcpus = instance.numa_topology.cpu_pinning.union(
107+
instance.numa_topology.cpuset_reserved)
106108
powered_down = set()
107109
for pcpu in pcpus:
108110
if pcpu in cpu_dedicated_set:

0 commit comments

Comments
 (0)