OvsDpdkSocketMemory MTU Roundup in bytes

This change is to update OvsDpdkSocketMemory computation in DPDK
derive parameters for MTU Round off to the bytes and buffer value
is 512MB instead of 500MB.

Change-Id: Ib8970986b9ea66bb3c4b9b6824fbd733cba9c2bf
Closes-Bug: #1737709
(cherry picked from commit 6daf22ce9c)
This commit is contained in:
Jaganathan Palanisamy 2017-12-13 04:42:44 -05:00
parent 5937e93d5d
commit 51f8515a19
2 changed files with 25 additions and 2 deletions

View File

@ -14,6 +14,7 @@
# under the License.
import logging
import math
import re
from mistral_lib import actions
@ -293,6 +294,12 @@ class GetDpdkSocketMemoryAction(base.TripleOAction):
self.packet_size_in_buffer = packet_size_in_buffer
self.minimum_socket_memory = minimum_socket_memory
# Computes round off MTU value in bytes
# example: MTU value 9000 into 9216 bytes
def roundup_mtu_bytes(self, mtu):
max_div_val = int(math.ceil(float(mtu) / float(1024)))
return (max_div_val * 1024)
# Calculates socket memory for a NUMA node
def calculate_node_socket_memory(
self, numa_node, dpdk_nics_numa_info, overhead,
@ -305,7 +312,8 @@ class GetDpdkSocketMemoryAction(base.TripleOAction):
if (numa_node == nics_info['numa_node'] and
not nics_info['mtu'] in distinct_mtu_per_node):
distinct_mtu_per_node.append(nics_info['mtu'])
socket_memory += (((nics_info['mtu'] + overhead)
roundup_mtu = self.roundup_mtu_bytes(nics_info['mtu'])
socket_memory += (((roundup_mtu + overhead)
* packet_size_in_buffer) /
(1024 * 1024))
@ -314,7 +322,7 @@ class GetDpdkSocketMemoryAction(base.TripleOAction):
socket_memory = minimum_socket_memory
# For DPDK numa node
else:
socket_memory += 500
socket_memory += 512
socket_memory_in_gb = int(socket_memory / 1024)
if socket_memory % 1024 > 0:

View File

@ -423,6 +423,21 @@ class GetDpdkSocketMemoryActionTest(base.TestCase):
result = action.run(mock_ctx)
self.assertEqual(result, expected_result)
def test_run_valid_roundup_mtu(self):
dpdk_nics_numa_info = [{"name": "ens802f1", "numa_node": 1,
"mtu": 1200}]
numa_nodes = [0, 1]
overhead = 800
packet_size_in_buffer = (4096 * 64)
expected_result = "1024,2048"
mock_ctx = mock.MagicMock()
action = derive_params.GetDpdkSocketMemoryAction(
dpdk_nics_numa_info, numa_nodes, overhead,
packet_size_in_buffer)
result = action.run(mock_ctx)
self.assertEqual(result, expected_result)
class ConvertNumberToRangeListActionTest(base.TestCase):