diff --git a/qemu/tests/cfg/hugepage_reset.cfg b/qemu/tests/cfg/hugepage_reset.cfg index a2c80c9ed6..fd7e3b74fd 100644 --- a/qemu/tests/cfg/hugepage_reset.cfg +++ b/qemu/tests/cfg/hugepage_reset.cfg @@ -4,8 +4,10 @@ pre_command = 'echo 3 > /proc/sys/vm/drop_caches && echo 1 > /proc/sys/vm/compact_memory' mem = 4096 origin_nr = 8 - # Please set hugepage in kernel command line before this test: - # default_hugepagesz=1G hugepagesz=1G hugepages=8 + # Please allocate enough hugepages at boot time for this test. + # IMPORTANT! Keep in mind the system's memory and number of NUMA nodes. + # Also check the hugepage size has changed to 1G + # Example: default_hugepagesz=1G hugepagesz=1G hugepages=24 expected_hugepage_size = 1048576 Windows: x86_64: diff --git a/qemu/tests/hugepage_reset.py b/qemu/tests/hugepage_reset.py index 16ba88cf15..2e79e0804e 100644 --- a/qemu/tests/hugepage_reset.py +++ b/qemu/tests/hugepage_reset.py @@ -21,6 +21,26 @@ def run(test, params, env): :param env: Dictionary with the test environment. """ + def allocate_largepages_per_node(): + """ + The functions is inteded to set 1G hugepages per NUMA + node when the system has four or more of these nodes. + For this function to work the hugepage size should be 1G. + This way a QEMU failure could be avoided if it's unable + to allocate memory. + """ + node_list = host_numa_node.online_nodes_withcpumem + if len(node_list) >= 4: + try: + for node in node_list: + node_mem_free = int( + host_numa_node.read_from_node_meminfo(node, "MemFree") + ) + if node_mem_free > (mem * 1024): + hp_config.set_node_num_huge_pages(4, node, "1048576") + except ValueError as e: + test.cancel(e) + def set_hugepage(): """Set nr_hugepages""" try: @@ -107,9 +127,9 @@ def heavyload_install(): "No node on your host has sufficient free memory for " "this test." ) hp_config = test_setup.HugePageConfig(params) + if params.get("on_numa_node"): + allocate_largepages_per_node() hp_config.target_hugepages = origin_nr - test.log.info("Setup hugepage number to %s", origin_nr) - hp_config.setup() hugepage_size = utils_memory.get_huge_page_size() params["hugepage_path"] = hp_config.hugepage_path params["start_vm"] = "yes"