Fix get_dpdk_queues_count method
It should return queues count limited by max supported
queues value on DPDK NIC and number core for PMD.
Change-Id: Ib28e2e699b62265ae9333912c1844ae3838b2de9
Closes-Bug: #1654950
(cherry picked from commit df106ebc51
)
This commit is contained in:
parent
c4953aea02
commit
0257e80dfb
|
@ -94,8 +94,10 @@ class NIC(DPDKMixin, NailgunObject):
|
|||
dpdk_cpu_pinning = utils.get_in(instance.node.attributes,
|
||||
'cpu_pinning', 'dpdk', 'value') or 0
|
||||
max_queues = utils.get_in(instance.meta, 'max_queues') or 0
|
||||
# dpdk for ovs_core_mask is dpdk_cpu_pinning - 1
|
||||
return min(max_queues, dpdk_cpu_pinning - 1)
|
||||
# Number CPU for ovs_pmd_core_mask equals number DPDK CPU pinning - 1
|
||||
# 1 CPU is needed for ovs_core_mask
|
||||
pmd_core_count = dpdk_cpu_pinning - 1 if dpdk_cpu_pinning > 0 else 0
|
||||
return min(max_queues, pmd_core_count)
|
||||
|
||||
@classmethod
|
||||
def dpdk_available(cls, instance, dpdk_drivers):
|
||||
|
|
|
@ -2312,6 +2312,47 @@ class TestNICObject(BaseTestCase):
|
|||
self.assertEqual(len(mac_list), 1)
|
||||
self.assertEqual(mac_list[0], expected_mac)
|
||||
|
||||
def _prepare_dpdk_settings(self, dpdk_cpu_pinning, max_queues):
|
||||
node = self.env.nodes[0]
|
||||
dpdk_nic = node.nic_interfaces[0]
|
||||
node.attributes['cpu_pinning'] = {
|
||||
'dpdk': {
|
||||
'value': dpdk_cpu_pinning
|
||||
}
|
||||
}
|
||||
objects.NIC.update(dpdk_nic, {
|
||||
'meta': {
|
||||
'dpdk': {
|
||||
'available': True
|
||||
},
|
||||
'max_queues': max_queues,
|
||||
},
|
||||
'attributes': {
|
||||
'dpdk': {
|
||||
'enabled': {
|
||||
'value': True
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
return dpdk_nic
|
||||
|
||||
def test_get_dpdk_queues_count_limited_pmd_core_count(self):
|
||||
dpdk_cpu_pinning = 4
|
||||
max_queues = 10
|
||||
dpdk_queues_count = dpdk_cpu_pinning - 1
|
||||
dpdk_nic = self._prepare_dpdk_settings(dpdk_cpu_pinning, max_queues)
|
||||
self.assertEqual(objects.NIC.get_dpdk_queues_count(dpdk_nic),
|
||||
dpdk_queues_count)
|
||||
|
||||
def test_get_dpdk_queues_count_limited_max_queues(self):
|
||||
dpdk_cpu_pinning = 4
|
||||
max_queues = 2
|
||||
dpdk_queues_count = max_queues
|
||||
dpdk_nic = self._prepare_dpdk_settings(dpdk_cpu_pinning, max_queues)
|
||||
self.assertEqual(objects.NIC.get_dpdk_queues_count(dpdk_nic),
|
||||
dpdk_queues_count)
|
||||
|
||||
|
||||
class TestIPAddrObject(BaseTestCase):
|
||||
|
||||
|
|
Loading…
Reference in New Issue