diff options
| author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2025-02-28 08:20:21 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-28 08:20:21 +0200 |
| commit | 7de0ab73af90d4d39519f3ba0dec80fb6b9badf5 (patch) | |
| tree | 5950aaccb970abf000cad946a6667b8d47c10d36 /src | |
| parent | 8e779ca8ea0f6b859aea167918310236f6834425 (diff) | |
| parent | 43374315e587306f4e40aefc6747ec9775752435 (diff) | |
| download | vyos-1x-7de0ab73af90d4d39519f3ba0dec80fb6b9badf5.tar.gz vyos-1x-7de0ab73af90d4d39519f3ba0dec80fb6b9badf5.zip | |
Merge pull request #21 from HollyGurza/T7200
T7200: Reduce memory size usage for vpp smoke tests
Diffstat (limited to 'src')
| -rwxr-xr-x | src/conf_mode/vpp.py | 43 |
1 files changed, 33 insertions, 10 deletions
diff --git a/src/conf_mode/vpp.py b/src/conf_mode/vpp.py index 97e3c0c7d..90a3bb7fb 100755 --- a/src/conf_mode/vpp.py +++ b/src/conf_mode/vpp.py @@ -43,6 +43,7 @@ from vyos.vpp.utils import ( EthtoolGDrvinfo, human_page_memory_to_bytes, human_memory_to_bytes, + bytes_to_human_memory, ) from vyos.vpp.configdb import JSONStorage @@ -295,18 +296,22 @@ def verify_memory(settings): settings.get('memory', {}).get('main_heap_size', '1G') ) - memory_main_heap_page_size = settings.get('memory', {}).get( - 'main_heap_page_size', 0 + if memory_main_heap < 51 << 20: + # vpp is aborted when we try to use a smaller heap size + raise ConfigError('The main heap size must be greater than or equal to 51M') + + memory_main_heap_page_size = human_page_memory_to_bytes( + settings.get('memory', {}).get('main_heap_page_size', 'default') ) - if memory_main_heap_page_size: - memory_main_heap_page_size = human_page_memory_to_bytes( - memory_main_heap_page_size - ) - memory_required += (memory_main_heap + memory_main_heap_page_size - 1) & ~( - memory_main_heap_page_size - 1 + + if memory_main_heap_page_size > memory_main_heap: + raise ConfigError( + f'The main heap size must be greater than or equal to page-size({bytes_to_human_memory(memory_main_heap_page_size, "K")})' ) - else: - memory_required += memory_main_heap + + memory_required += (memory_main_heap + memory_main_heap_page_size - 1) & ~( + memory_main_heap_page_size - 1 + ) statseg_size = human_memory_to_bytes(settings.get('statseg', {}).get('size', '96M')) memory_required += statseg_size @@ -498,6 +503,24 @@ def verify(config): 'The max_map_count must be greater than or equal to (2 * nr_hugepages)' ) + if 'statseg' in config['settings']: + _size = human_memory_to_bytes(config['settings']['statseg'].get('size', '96M')) + + if 'size' in config['settings']['statseg']: + if _size < 1 << 20: + raise ConfigError( + 'The statseg size must be greater than or equal to 1M' + ) + + if 'page_size' in config['settings']['statseg']: + _page_size = human_page_memory_to_bytes( + config['settings']['statseg']['page_size'] + ) + if _page_size > _size: + raise ConfigError( + f'The statseg size must be greater than or equal to page-size({bytes_to_human_memory(_page_size, "K")})' + ) + # Check if deleted interfaces are not xconnect memebrs for iface_config in config.get('removed_ifaces', []): if iface_config['iface_name'] in config.get('xconn_members', {}): |
