summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorNataliia S. <81954790+natali-rs1985@users.noreply.github.com>2025-07-08 16:43:21 +0200
committerGitHub <noreply@github.com>2025-07-08 15:43:21 +0100
commitfce4f84c69e3cb6e130fbe486154134bd62cd5f6 (patch)
treee95c8cc66c9d563f392ff283aa33dc7f1c7bf6b9 /python
parent50f8d4bd4ad6e69aa57797f5875e708850b45ef7 (diff)
downloadvyos-1x-fce4f84c69e3cb6e130fbe486154134bd62cd5f6.tar.gz
vyos-1x-fce4f84c69e3cb6e130fbe486154134bd62cd5f6.zip
T7611: VPP Rewrite check for CPUs and memory (#44)
Diffstat (limited to 'python')
-rw-r--r--python/vyos/vpp/config_resource_checks/cpu.py4
-rw-r--r--python/vyos/vpp/config_resource_checks/memory.py22
-rw-r--r--python/vyos/vpp/config_resource_checks/resource_defaults.py21
-rw-r--r--python/vyos/vpp/config_verify.py20
4 files changed, 18 insertions, 49 deletions
diff --git a/python/vyos/vpp/config_resource_checks/cpu.py b/python/vyos/vpp/config_resource_checks/cpu.py
index 6f360ae74..ee0bace2d 100644
--- a/python/vyos/vpp/config_resource_checks/cpu.py
+++ b/python/vyos/vpp/config_resource_checks/cpu.py
@@ -18,11 +18,11 @@
from vyos.utils.cpu import get_available_cpus, get_core_count
-from vyos.vpp.config_resource_checks.resource_defaults import get_resource_defaults
+from vyos.vpp.config_resource_checks.resource_defaults import default_resource_map
# Get default value for reserved cpu cores
-reserved_cpus = get_resource_defaults().get('reserved_cpu_cores')
+reserved_cpus = default_resource_map.get('reserved_cpu_cores')
def available_cores_count(cpu_settings: dict) -> int:
diff --git a/python/vyos/vpp/config_resource_checks/memory.py b/python/vyos/vpp/config_resource_checks/memory.py
index 44f0c9358..f5c7286bc 100644
--- a/python/vyos/vpp/config_resource_checks/memory.py
+++ b/python/vyos/vpp/config_resource_checks/memory.py
@@ -23,11 +23,7 @@ from vyos.vpp.utils import (
human_memory_to_bytes,
human_page_memory_to_bytes,
)
-from vyos.vpp.config_resource_checks.resource_defaults import get_resource_defaults
-
-
-# Get default values for resource checks
-defaults = get_resource_defaults()
+from vyos.vpp.config_resource_checks.resource_defaults import default_resource_map
def get_total_hugepages_free_memory() -> int:
@@ -74,11 +70,13 @@ def buffer_size(settings: dict) -> int:
numa_count = get_numa_count()
buffers_per_numa = int(
settings.get('buffers', {}).get(
- 'buffers_per_numa', defaults.get('buffers_per_numa')
+ 'buffers_per_numa', default_resource_map.get('buffers_per_numa')
)
)
data_size = int(
- settings.get('buffers', {}).get('data_size', defaults.get('data_size'))
+ settings.get('buffers', {}).get(
+ 'data_size', default_resource_map.get('data_size')
+ )
)
buffers_memory = buffers_per_numa * data_size * numa_count
return buffers_memory
@@ -86,21 +84,21 @@ def buffer_size(settings: dict) -> int:
def main_heap_page_size(settings: dict) -> int:
heap_page_size = settings.get('memory', {}).get(
- 'main_heap_page_size', defaults.get('main_heap_page_size')
+ 'main_heap_page_size', default_resource_map.get('main_heap_page_size')
)
return human_page_memory_to_bytes(heap_page_size)
def memory_main_heap(settings: dict) -> int:
heap_size = settings.get('memory', {}).get(
- 'main_heap_size', defaults.get('main_heap_size')
+ 'main_heap_size', default_resource_map.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', defaults.get('ipv6_heap_size')
+ 'heap_size', default_resource_map.get('ipv6_heap_size')
)
return human_memory_to_bytes(heap_size)
@@ -111,7 +109,7 @@ 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', defaults.get('statseg_heap_size')
+ 'size', default_resource_map.get('statseg_heap_size')
)
return human_memory_to_bytes(statseg_memory)
@@ -132,7 +130,7 @@ def total_memory_required(settings: dict) -> int:
'memory_buffers': buffer_size(settings),
'netlink_buffer_size': int(
settings.get('lcp', {}).get(
- 'rx_buffer_size', defaults.get('netlink_rx_buffer_size')
+ 'rx_buffer_size', default_resource_map.get('netlink_rx_buffer_size')
)
),
'heap_size': total_heap_size(
diff --git a/python/vyos/vpp/config_resource_checks/resource_defaults.py b/python/vyos/vpp/config_resource_checks/resource_defaults.py
index 3c618accd..828683456 100644
--- a/python/vyos/vpp/config_resource_checks/resource_defaults.py
+++ b/python/vyos/vpp/config_resource_checks/resource_defaults.py
@@ -16,11 +16,8 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-import copy
-import os
-
-__default_resource_map = {
+default_resource_map = {
# Default amount of buffers per NUMA (populated CPU socket)
'buffers_per_numa': 16384,
# Default size of buffer (in bytes)
@@ -44,19 +41,3 @@ __default_resource_map = {
# Default heap size for IPv6
'ipv6_heap_size': '32M',
}
-
-
-def get_resource_defaults() -> dict:
- resource_map = copy.deepcopy(__default_resource_map)
- # Check if current runtime is smoke tests
- # Since CI/CD runners are limited in resources, reduce the checks for tests
- if is_smoketest():
- resource_map.update(min_memory='6G', min_cpus=2, reserved_cpu_cores=0)
-
- return resource_map
-
-
-def is_smoketest():
- if os.path.exists('/tmp/vyos.smoketests.hint'):
- return True
- return False
diff --git a/python/vyos/vpp/config_verify.py b/python/vyos/vpp/config_verify.py
index 4505d205f..cda5cf012 100644
--- a/python/vyos/vpp/config_verify.py
+++ b/python/vyos/vpp/config_verify.py
@@ -23,14 +23,10 @@ from vyos.utils.cpu import get_core_count as total_core_count
from vyos.vpp.control_host import get_eth_driver
from vyos.vpp.config_resource_checks import cpu as cpu_checks, memory as mem_checks
-from vyos.vpp.config_resource_checks import resource_defaults
+from vyos.vpp.config_resource_checks.resource_defaults import default_resource_map
from vyos.vpp.utils import human_memory_to_bytes, bytes_to_human_memory
-# Get default values for resource checks
-defaults = resource_defaults.get_resource_defaults()
-
-
def verify_vpp_remove_kernel_interface(config: dict):
"""Common verify for removed kernel-interfaces.
Verify that removed kernel interface are not used in 'vpp kernel-interfaces'.
@@ -188,7 +184,7 @@ def verify_vpp_minimum_cpus():
Verify that the host system has enough physical CPU cores
Current minimal requirement is 4
"""
- min_cpus = defaults.get('min_cpus')
+ min_cpus = default_resource_map.get('min_cpus')
if total_core_count() < min_cpus:
raise ConfigError(
'This system does not meet minimal requirements for VPP. '
@@ -204,7 +200,7 @@ def verify_vpp_minimum_memory():
To avoid situations like when a machine nominally has 8192 MB (8 giga/gibibytes)
But the OS sees only 7.75 GB, creating a fail condition for this check
"""
- min_mem = defaults.get('min_memory')
+ min_mem = default_resource_map.get('min_memory')
total_memory = round(psutil.virtual_memory().total / (1024**3))
min_memory = round(human_memory_to_bytes(min_mem) / (1024**3))
@@ -229,14 +225,8 @@ def verify_vpp_memory(config: dict):
f'The main heap size must be greater than or equal to page-size ({readable_heap_page})'
)
- # Get available HupePage memory to compare with required memory for VPP
- # (if it's smketests environment get system kernel settings for HugePages)
- if not resource_defaults.is_smoketest():
- available_memory = mem_checks.get_total_hugepages_free_memory()
- else:
- available_memory = mem_checks.get_memory_from_kernel_settings(
- config['kernel_memory_settings']
- )
+ # Get available HugePage memory to compare with required memory for VPP
+ available_memory = mem_checks.get_total_hugepages_free_memory()
memory_required = mem_checks.total_memory_required(config['settings'])