diff options
| author | Nataliia Solomko <natalirs1985@gmail.com> | 2025-09-18 12:10:19 +0300 |
|---|---|---|
| committer | Nataliia Solomko <natalirs1985@gmail.com> | 2025-09-18 15:43:25 +0300 |
| commit | 45f7f3849a15af888cb826b4d71046553911eebd (patch) | |
| tree | 5caf869ecae8f35e4d96607c80439424432c8e7f | |
| parent | 1522496d16c77a5f69c96e01a72780e33e9045a3 (diff) | |
| download | vyos-1x-45f7f3849a15af888cb826b4d71046553911eebd.tar.gz vyos-1x-45f7f3849a15af888cb826b4d71046553911eebd.zip | |
T7805: VPP remove unused 'default-hugepage-size' from memory section and restrict page sizes in xml
| -rw-r--r-- | data/templates/vpp/startup.conf.j2 | 3 | ||||
| -rw-r--r-- | interface-definitions/include/unformat_log2_page_size.xml.i | 17 | ||||
| -rw-r--r-- | interface-definitions/vpp.xml.in | 11 | ||||
| -rw-r--r-- | python/vyos/vpp/config_resource_checks/memory.py | 45 | ||||
| -rw-r--r-- | python/vyos/vpp/config_resource_checks/resource_defaults.py | 14 | ||||
| -rw-r--r-- | python/vyos/vpp/utils.py | 17 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_vpp.py | 42 |
7 files changed, 33 insertions, 116 deletions
diff --git a/data/templates/vpp/startup.conf.j2 b/data/templates/vpp/startup.conf.j2 index b7515889a..4c65e3cb4 100644 --- a/data/templates/vpp/startup.conf.j2 +++ b/data/templates/vpp/startup.conf.j2 @@ -160,9 +160,6 @@ memory { {% if memory.main_heap_page_size is vyos_defined %} main-heap-page-size {{ memory.main_heap_page_size }} {% endif %} -{% if memory.default_hugepage_size is vyos_defined %} - default-hugepage-size {{ memory.default_hugepage_size }} -{% endif %} } {% endif %} diff --git a/interface-definitions/include/unformat_log2_page_size.xml.i b/interface-definitions/include/unformat_log2_page_size.xml.i index ce6f70dc8..7678c1860 100644 --- a/interface-definitions/include/unformat_log2_page_size.xml.i +++ b/interface-definitions/include/unformat_log2_page_size.xml.i @@ -1,17 +1,20 @@ <!-- include start from unformat_log2_page_size.xml.i --> <completionHelp> - <list>default default-hugepage</list> - <script>sudo ${vyos_completion_dir}/list_mem_page_size.py</script> + <list>4K 2M 1G</list> </completionHelp> <valueHelp> - <format>default</format> - <description>Default</description> + <format>4K</format> + <description>4 kilobytes</description> </valueHelp> <valueHelp> - <format>default-hugepage</format> - <description>Default huge-page</description> + <format>2M</format> + <description>2 megabytes</description> +</valueHelp> +<valueHelp> + <format>1G</format> + <description>1 gigabyte</description> </valueHelp> <constraint> - <regex>(default|default-hugepage|4K|8K|1024K|64K|256K|2048K|4096K|16384K|262144K|1048576K|16777216K|1M|2M|4M|16M|256M|1024M|16384M|1G|16G)</regex> + <regex>(4K|2M|1G)</regex> </constraint> <!-- include end --> diff --git a/interface-definitions/vpp.xml.in b/interface-definitions/vpp.xml.in index e7a21ecf1..1eb41259d 100644 --- a/interface-definitions/vpp.xml.in +++ b/interface-definitions/vpp.xml.in @@ -392,7 +392,7 @@ <help>Set the page-size for buffer allocation</help> #include <include/unformat_log2_page_size.xml.i> </properties> - <defaultValue>default</defaultValue> + <defaultValue>2M</defaultValue> </leafNode> </children> </node> @@ -789,15 +789,6 @@ </properties> <defaultValue>2M</defaultValue> </leafNode> - <leafNode name="default-hugepage-size"> - <properties> - <help>Default hugepage size</help> - <completionHelp> - <script>sudo ${vyos_completion_dir}/list_mem_page_size.py --hugepage_only True </script> - </completionHelp> - </properties> - <defaultValue>2M</defaultValue> - </leafNode> </children> </node> <node name="nat44"> diff --git a/python/vyos/vpp/config_resource_checks/memory.py b/python/vyos/vpp/config_resource_checks/memory.py index ea4697ba2..03fe097e9 100644 --- a/python/vyos/vpp/config_resource_checks/memory.py +++ b/python/vyos/vpp/config_resource_checks/memory.py @@ -21,10 +21,7 @@ import re import psutil from vyos.utils.process import cmd -from vyos.vpp.utils import ( - human_memory_to_bytes, - human_page_memory_to_bytes, -) +from vyos.vpp.utils import human_memory_to_bytes from vyos.vpp.config_resource_checks.resource_defaults import default_resource_map @@ -53,7 +50,7 @@ def get_hugepages_info() -> dict: for entry in os.listdir(base_path): page_size_kb = entry[10:] - page_size = human_page_memory_to_bytes(page_size_kb) + page_size = human_memory_to_bytes(page_size_kb) key = classify_page_size(page_size) info[key] = {} @@ -94,44 +91,30 @@ def get_numa_count(): def buffer_page_size(settings: dict) -> int: - page_size = settings.get('buffers', {}).get('page_size', 'default') - return human_page_memory_to_bytes(page_size) + page_size = settings.get('buffers', {}).get('page_size') + return human_memory_to_bytes(page_size) def buffer_size(settings: dict) -> int: numa_count = get_numa_count() - buffers_per_numa = int( - settings.get('buffers', {}).get( - 'buffers_per_numa', default_resource_map.get('buffers_per_numa') - ) - ) - data_size = int( - settings.get('buffers', {}).get( - 'data_size', default_resource_map.get('data_size') - ) - ) + buffers_per_numa = int(settings.get('buffers').get('buffers_per_numa')) + data_size = int(settings.get('buffers').get('data_size')) buffers_memory = buffers_per_numa * data_size * numa_count return buffers_memory def main_heap_page_size(settings: dict) -> int: - heap_page_size = settings.get('memory', {}).get( - 'main_heap_page_size', default_resource_map.get('main_heap_page_size') - ) - return human_page_memory_to_bytes(heap_page_size) + heap_page_size = settings.get('memory').get('main_heap_page_size') + return human_memory_to_bytes(heap_page_size) def memory_main_heap(settings: dict) -> int: - heap_size = settings.get('memory', {}).get( - 'main_heap_size', default_resource_map.get('main_heap_size') - ) + heap_size = settings.get('memory').get('main_heap_size') return human_memory_to_bytes(heap_size) def ipv6_heap_size(settings: dict) -> int: - heap_size = settings.get('ipv6', {}).get( - 'heap_size', default_resource_map.get('ipv6_heap_size') - ) + heap_size = settings.get('ipv6').get('heap_size') return human_memory_to_bytes(heap_size) @@ -140,15 +123,13 @@ def total_heap_size(heap_size: int, heap_page_size: int) -> int: def statseg_size(settings: dict) -> int: - statseg_memory = settings.get('statseg', {}).get( - 'size', default_resource_map.get('statseg_heap_size') - ) + statseg_memory = settings.get('statseg').get('size') return human_memory_to_bytes(statseg_memory) def statseg_page_size(settings: dict) -> int: - page_size = settings.get('statseg', {}).get('page_size') - return human_page_memory_to_bytes(page_size) + page_size = settings.get('statseg').get('page_size') + return human_memory_to_bytes(page_size) def total_statseg_size(_statseg_size: int, _statseg_page: int) -> int: diff --git a/python/vyos/vpp/config_resource_checks/resource_defaults.py b/python/vyos/vpp/config_resource_checks/resource_defaults.py index d8316fcaf..71a98703e 100644 --- a/python/vyos/vpp/config_resource_checks/resource_defaults.py +++ b/python/vyos/vpp/config_resource_checks/resource_defaults.py @@ -18,26 +18,12 @@ default_resource_map = { - # Default amount of buffers per NUMA (populated CPU socket) - 'buffers_per_numa': 16384, - # Default size of buffer (in bytes) - 'data_size': 2048, - # Default hugepage size for VPP - 'hugepage_size': '2M', - # Default amount of memory allocated for VPP exclusive usage - 'main_heap_size': '3G', - # Default main heap page size - 'main_heap_page_size': '2M', # Default size of buffers transferred via netlink 'netlink_rx_buffer_size': 212992, - # Default amount of memory allocated for VPP stats segment usage - 'statseg_heap_size': '128M', # Minimal amount of memory required to start VPP 'min_memory': '8G', # Minimal number of physical CPU cores required to start VPP 'min_cpus': 4, # Reserve at least 2 physical cores 'reserved_cpu_cores': 2, - # Default heap size for IPv6 - 'ipv6_heap_size': '32M', } diff --git a/python/vyos/vpp/utils.py b/python/vyos/vpp/utils.py index 4e42232cd..963423e2b 100644 --- a/python/vyos/vpp/utils.py +++ b/python/vyos/vpp/utils.py @@ -330,23 +330,6 @@ def bytes_to_human_memory(value: int, unit: str) -> str | None: return f'{val}{unit}' if val else None -def human_page_memory_to_bytes(value: str) -> int: - """ - Convert a human-readable vpp page size format to a byte value. - - :param value: The string memory size in vpp human-readable format. - :return: A int representing the value. - """ - default = { - 'default': get_default_page_size, - 'default-hugepage': get_default_hugepage_size, - } - try: - return default[value]() - except KeyError: - return human_memory_to_bytes(value) - - class EthtoolGDrvinfo: """Return interface details like `ethtol -i` does""" diff --git a/smoketest/scripts/cli/test_vpp.py b/smoketest/scripts/cli/test_vpp.py index 0611d2851..3cfc2a853 100755 --- a/smoketest/scripts/cli/test_vpp.py +++ b/smoketest/scripts/cli/test_vpp.py @@ -19,7 +19,6 @@ import os import re -import sys import unittest from collections import defaultdict @@ -32,10 +31,6 @@ from vyos.utils.process import process_named_running from vyos.utils.file import read_file from vyos.utils.process import rc_cmd from vyos.utils.system import sysctl_read -from vyos.vpp.utils import human_page_memory_to_bytes - -sys.path.append(os.getenv('vyos_completion_dir')) -from list_mem_page_size import list_mem_page_size PROCESS_NAME = 'vpp_main' VPP_CONF = '/run/vpp/vpp.conf' @@ -1201,10 +1196,8 @@ class TestVPP(VyOSUnitTestSHIM.TestCase): self.assertIn(config_entry, config) def test_13_1_buffer_page_size(self): - sizes = ['default', 'default-hugepage'] + list_mem_page_size() + sizes = ['4K', '2M'] for size in sizes: - if human_page_memory_to_bytes(size) >= 1 << 30: - continue self.cli_set(base_path + ['settings', 'buffers', 'page-size', size]) self.cli_commit() @@ -1212,10 +1205,8 @@ class TestVPP(VyOSUnitTestSHIM.TestCase): self.assertEqual(conf['buffers']['page-size'], size) def test_13_2_statseg_page_size(self): - sizes = ['default', 'default-hugepage'] + list_mem_page_size() + sizes = ['4K', '2M'] for size in sizes: - if human_page_memory_to_bytes(size) >= 1 << 30: - continue self.cli_set(base_path + ['settings', 'statseg', 'page-size', size]) self.cli_commit() @@ -1223,10 +1214,8 @@ class TestVPP(VyOSUnitTestSHIM.TestCase): self.assertEqual(conf['statseg']['page-size'], size) def test_13_3_mem_page_size(self): - sizes = ['default', 'default-hugepage'] + list_mem_page_size() + sizes = ['4K', '2M'] for size in sizes: - if human_page_memory_to_bytes(size) >= 1 << 30: - continue self.cli_set( base_path + ['settings', 'memory', 'main-heap-page-size', size] ) @@ -1235,20 +1224,7 @@ class TestVPP(VyOSUnitTestSHIM.TestCase): conf = get_vpp_config() self.assertEqual(conf['memory']['main-heap-page-size'], size) - def test_14_mem_default_hugepage(self): - sizes = list_mem_page_size(hugepage_only=True) - for size in sizes: - if human_page_memory_to_bytes(size) >= 1 << 30: - continue - self.cli_set( - base_path + ['settings', 'memory', 'default-hugepage-size', size] - ) - self.cli_commit() - - conf = get_vpp_config() - self.assertEqual(conf['memory']['default-hugepage-size'], size) - - def test_15_vpp_ipsec_xfrm_nl(self): + def test_14_vpp_ipsec_xfrm_nl(self): base_ipsec = base_path + ['settings', 'ipsec'] batch_delay = '250' batch_size = '150' @@ -1280,7 +1256,7 @@ class TestVPP(VyOSUnitTestSHIM.TestCase): config = read_file(VPP_CONF) self.assertIn('interface ipip', config) - def test_16_vpp_cgnat(self): + def test_15_vpp_cgnat(self): base_cgnat = base_path + ['nat', 'cgnat'] iface_out = 'eth0' iface_inside = 'eth1' @@ -1319,7 +1295,7 @@ class TestVPP(VyOSUnitTestSHIM.TestCase): self.assertIn(f'tcp transitory timeout: {timeout_tcp_trans}sec', out) self.assertIn(f'icmp timeout: {timeout_icmp}sec', out) - def test_17_vpp_nat(self): + def test_16_vpp_nat(self): base_nat = base_path + ['nat44'] base_nat_settings = base_path + ['settings', 'nat44'] exclude_local_addr = '100.64.0.52' @@ -1394,7 +1370,7 @@ class TestVPP(VyOSUnitTestSHIM.TestCase): _, out = rc_cmd('sudo vppctl show nat44 summary') self.assertIn(f'max translations per thread: {sess_limit} fib 0', out) - def test_18_vpp_sflow(self): + def test_17_vpp_sflow(self): base_sflow = ['system', 'sflow'] self.cli_set(base_path + ['sflow', 'interface', interface]) @@ -1418,7 +1394,7 @@ class TestVPP(VyOSUnitTestSHIM.TestCase): self.cli_delete(base_sflow) self.cli_commit() - def test_19_resource_limits(self): + def test_18_resource_limits(self): max_map_count = '100000' shmmax = '55555555555555' hr_path = ['system', 'option', 'resource-limits'] @@ -1445,7 +1421,7 @@ class TestVPP(VyOSUnitTestSHIM.TestCase): self.assertEqual(sysctl_read('vm.max_map_count'), '65530') self.assertEqual(sysctl_read('kernel.shmmax'), '8589934592') - def test_20_vpp_pppoe_mapping(self): + def test_19_vpp_pppoe_mapping(self): config_file = '/run/accel-pppd/pppoe.conf' pool = "TEST-POOL" vni = '23' |
