summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNataliia Solomko <natalirs1985@gmail.com>2025-09-18 12:10:19 +0300
committerNataliia Solomko <natalirs1985@gmail.com>2025-09-18 15:43:25 +0300
commit45f7f3849a15af888cb826b4d71046553911eebd (patch)
tree5caf869ecae8f35e4d96607c80439424432c8e7f
parent1522496d16c77a5f69c96e01a72780e33e9045a3 (diff)
downloadvyos-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.j23
-rw-r--r--interface-definitions/include/unformat_log2_page_size.xml.i17
-rw-r--r--interface-definitions/vpp.xml.in11
-rw-r--r--python/vyos/vpp/config_resource_checks/memory.py45
-rw-r--r--python/vyos/vpp/config_resource_checks/resource_defaults.py14
-rw-r--r--python/vyos/vpp/utils.py17
-rwxr-xr-xsmoketest/scripts/cli/test_vpp.py42
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'