From 1d796be00c97c0f00718f94da80321f0c764473c Mon Sep 17 00:00:00 2001 From: Liang Cong Date: Tue, 21 Oct 2025 00:12:07 -0400 Subject: [PATCH] lifecycle_for_hugepage: Use dynamic page size and improve cleanup Key changes: 1. Replace hardcoded page size mapping with dynamic one; 2. Ensure proper hugepage release in teardown; Signed-off-by: Liang Cong --- .../memory_backing/lifecycle_for_hugepage.cfg | 2 +- .../memory_backing/lifecycle_for_hugepage.py | 17 +++++++---------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/libvirt/tests/cfg/memory/memory_backing/lifecycle_for_hugepage.cfg b/libvirt/tests/cfg/memory/memory_backing/lifecycle_for_hugepage.cfg index c63fe910152..7907876e9b7 100644 --- a/libvirt/tests/cfg/memory/memory_backing/lifecycle_for_hugepage.cfg +++ b/libvirt/tests/cfg/memory/memory_backing/lifecycle_for_hugepage.cfg @@ -42,7 +42,7 @@ memory_backing_dict = "'mb': {'hugepages': {}}" vm_attrs = {${memory_backing_dict}, 'memory_unit':'${mem_unit}','memory':${mem_value},'current_mem':${current_mem},'current_mem_unit':'${current_mem_unit}'} HugePages_Free = "0" - free_hugepages = ${set_pagenum} + free_hugepages = "0" - 1G: no s390-virtio page_size = "1" diff --git a/libvirt/tests/src/memory/memory_backing/lifecycle_for_hugepage.py b/libvirt/tests/src/memory/memory_backing/lifecycle_for_hugepage.py index 4877f9f853b..107d3a23cf9 100644 --- a/libvirt/tests/src/memory/memory_backing/lifecycle_for_hugepage.py +++ b/libvirt/tests/src/memory/memory_backing/lifecycle_for_hugepage.py @@ -54,7 +54,7 @@ def adjust_parameters(params, test): :ret: dict, the updated test parameters """ def sub_update(): - set_pagesize = default_pgsize_set_mapping[default_pagesize] + set_pagesize = memory.get_huge_page_size() params['set_pagesize'] = set_pagesize params['mount_size'] = set_pagesize params['set_pagenum'] = int(math.floor(total_hugepage_mem/set_pagesize)) @@ -67,11 +67,10 @@ def sub_update(): total_hugepage_mem = int(params.get('total_hugepage_mem')) if scenario == 'default_page_size': vm_attrs['mb']['hugepages']['pages'][0]['size'] = default_pagesize + elif scenario in ['0', 'default_hugepage_size']: + sub_update() if current_arch == 'aarch64': - # kernel page size vs. huge page size to be set for kernel mm file - # like if kernel page size 64K, then huge page size to be set is 2048K - default_pgsize_set_mapping = {64: 2048, 4: 1048576} default_hugepage_size = memory.get_huge_page_size() params['vm_nr_hugepages'] = int(math.floor(total_hugepage_mem/default_hugepage_size)) @@ -79,14 +78,10 @@ def sub_update(): sub_update() params['HugePages_Free'] = params['vm_nr_hugepages'] params['free_hugepages'] = params['set_pagenum'] - elif scenario in ['default_hugepage_size', 'scarce_mem']: + elif scenario == 'scarce_mem': sub_update() params['free_hugepages'] = params['set_pagenum'] - elif scenario == '1G': - params['HugePages_Free'] = params['vm_nr_hugepages'] - elif scenario == '0': - sub_update() - elif scenario in ['2M', '16G', '64K', '32M']: + elif scenario in ['2M', '1G', '16G', '64K', '32M']: params['HugePages_Free'] = params['vm_nr_hugepages'] test.log.debug("params['HugePages_Free']=%s", params.get('HugePages_Free')) test.log.debug("params['free_hugepages']=%s", params.get('free_hugepages')) @@ -213,12 +208,14 @@ def teardown_test(vmxml, params, test): :param test: test object """ save_file = params.get("save_file", "/tmp/guest.save") + set_pagesize = params.get("set_pagesize") test.log.info("TEST_TEARDOWN: Clean up env.") vmxml.sync() if os.path.exists(save_file): os.remove(save_file) hp_cfg = test_setup.HugePageConfig(params) + hp_cfg.set_kernel_hugepages(set_pagesize, 0, False) hp_cfg.cleanup()