From 5d0f6aad265f2fa10c7d822e1d135072a6feaf4f Mon Sep 17 00:00:00 2001 From: "Nataliia S." <81954790+natali-rs1985@users.noreply.github.com> Date: Tue, 8 Jul 2025 16:44:42 +0200 Subject: T7607: Remove "set vpp settings host-resources nr_hugepages " setting (#43) --- python/vyos/vpp/config_resource_checks/memory.py | 21 ++++++++++++++++++--- python/vyos/vpp/config_verify.py | 12 ++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) (limited to 'python') diff --git a/python/vyos/vpp/config_resource_checks/memory.py b/python/vyos/vpp/config_resource_checks/memory.py index f5c7286bc..64fdf9abe 100644 --- a/python/vyos/vpp/config_resource_checks/memory.py +++ b/python/vyos/vpp/config_resource_checks/memory.py @@ -26,10 +26,10 @@ from vyos.vpp.utils import ( from vyos.vpp.config_resource_checks.resource_defaults import default_resource_map -def get_total_hugepages_free_memory() -> int: +def get_hugepages_info() -> dict: """ - Returns the total amount of hugepage-backed free memory (in bytes) - as reported by /proc/meminfo + Returns the information about HugePages + retrieved from /proc/meminfo """ info = {} with open('/proc/meminfo', 'r') as meminfo: @@ -37,13 +37,28 @@ def get_total_hugepages_free_memory() -> int: if line.startswith('Huge'): key, value, *_ = line.strip().split() info[key.rstrip(':')] = int(value) + return info + +def get_total_hugepages_free_memory() -> int: + """ + Returns the total amount of hugepage-backed free memory (in bytes) + """ + info = get_hugepages_info() hugepages_free = info.get('HugePages_Free') hugepage_size = info.get('Hugepagesize') * 1024 return hugepage_size * hugepages_free +def get_hugepages_total() -> int: + """ + Returns the total count of hugepages + """ + info = get_hugepages_info() + return info.get('HugePages_Total') + + def get_numa_count(): """ Run `numactl --hardware` and parse the 'available:' line. diff --git a/python/vyos/vpp/config_verify.py b/python/vyos/vpp/config_verify.py index cda5cf012..65dfac91a 100644 --- a/python/vyos/vpp/config_verify.py +++ b/python/vyos/vpp/config_verify.py @@ -389,3 +389,15 @@ def verify_vpp_interfaces_dpdk_num_queues(qtype: str, num_queues: int, workers: f'The number of {qtype} queues cannot be greater than the number of configured VPP workers: ' f'workers: {workers}, queues: {num_queues}' ) + + +def verify_vpp_host_resources(config: dict): + max_map_count = int(config['settings']['host_resources']['max_map_count']) + + # Get HugePages total count + hugepages = mem_checks.get_hugepages_total() + + if max_map_count < 2 * hugepages: + raise ConfigError( + 'The max_map_count must be greater than or equal to (2 * HugePages_Total)' + ) -- cgit v1.2.3