diff options
| author | khramshinr <khramshinr@gmail.com> | 2025-02-20 14:08:54 +0700 |
|---|---|---|
| committer | khramshinr <khramshinr@gmail.com> | 2025-02-21 17:24:12 +0700 |
| commit | 4abb970491dfc83234b817808d18ae6bfeeeffe8 (patch) | |
| tree | deb6f8f74428592ab59e7755767edbaa40394cec /src/completion | |
| parent | 752b400aaf5520c29726dadfc94127a06e0ad5a9 (diff) | |
| download | vyos-1x-4abb970491dfc83234b817808d18ae6bfeeeffe8.tar.gz vyos-1x-4abb970491dfc83234b817808d18ae6bfeeeffe8.zip | |
T7073: Verify VPP buffers page size
T7077: Verify VPP memory default-hugepage-size
T7079: Verify VPP memory main-heap-page-size
T7080: Verify VPP statseg page-size
get available hugepage sizes
align memory main-heap-size by page size
validate host_resources max_map_count
Diffstat (limited to 'src/completion')
| -rw-r--r-- | src/completion/list_mem_page_size.py | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/completion/list_mem_page_size.py b/src/completion/list_mem_page_size.py new file mode 100644 index 000000000..1ed81a15f --- /dev/null +++ b/src/completion/list_mem_page_size.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2025 VyOS Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see <http://www.gnu.org/licenses/>. +import argparse +from vyos.vpp.utils import ( + get_hugepage_sizes, + get_default_hugepage_size, + get_default_page_size, + bytes_to_human_memory, +) + + +def get_default_page_sizes() -> list[int]: + """ + Retrieve the system's default page sizes, including huge pages. + :return: A list of page sizes in bytes. + """ + page_sizes = [] + # default system page size + page_size = get_default_page_size() + if page_size: + page_sizes.append(page_size) + + # default huge page size + page_size = get_default_hugepage_size() + if page_size: + page_sizes.append(page_size) + + return page_sizes + + +def list_mem_page_size(hugepage_only=None) -> list[str]: + result = [] + page_sizes = get_hugepage_sizes() + + if not hugepage_only: + page_sizes += get_default_page_sizes() + + page_sizes = set(page_sizes) + for unit in ['K', 'M', 'G']: + for size in page_sizes: + if val := bytes_to_human_memory(size, unit): + result.append(val) + + return result + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument( + '--hugepage_only', type=str, help='List only available hugepage sizes.' + ) + args = parser.parse_args() + + result = list_mem_page_size(args.hugepage_only) + print(' '.join(result)) |
