diff --git a/generic/tests/cfg/netperf.cfg b/generic/tests/cfg/netperf.cfg index f1fc7a9b3b..b6f36b46b0 100644 --- a/generic/tests/cfg/netperf.cfg +++ b/generic/tests/cfg/netperf.cfg @@ -1,6 +1,7 @@ - netperf: install setup image_copy unattended_install.cdrom virt_test_type = qemu libvirt type = netperf + not_preprocess = yes kill_vm = yes image_snapshot = yes setup_ksm = no @@ -32,7 +33,6 @@ # bridge_force_create=yes # bridge_nic1 = #numa configration - numa_node = -1 netperf_with_numa = yes # configure netperf test parameters, some seconds will be took to # wait all the clients work, this wait time should be less than diff --git a/generic/tests/netperf.py b/generic/tests/netperf.py index 9cf50218f8..16d0bd1283 100644 --- a/generic/tests/netperf.py +++ b/generic/tests/netperf.py @@ -5,7 +5,15 @@ import time from avocado.utils import process -from virttest import error_context, remote, utils_misc, utils_net, utils_test, virt_vm +from virttest import ( + env_process, + error_context, + remote, + utils_misc, + utils_net, + utils_test, + virt_vm, +) from provider import netperf_base, win_driver_utils @@ -136,8 +144,24 @@ def mtu_set(mtu): "The ethenet device does not support jumbo," "cancel test" ) - vm = env.get_vm(params["main_vm"]) - vm.verify_alive() + pinned_node = 0 + host_numa = utils_misc.NumaInfo() + node_list = host_numa.online_nodes_withcpumem + try: + for node in node_list: + node_mem_free = int(host_numa.read_from_node_meminfo(node, "MemFree")) + mem = int(params["mem"]) + mem_kb = mem * 1024 + if node_mem_free > mem_kb: + pinned_node = node + params["qemu_command_prefix"] = f"numactl -m {pinned_node}" + vm_name = params["main_vm"] + env_process.preprocess_vm(test, params, env, vm_name) + vm = env.get_vm(vm_name) + vm.verify_alive() + except virt_vm.VMCreateError: + test.error("Not enough memory on the nodes to create the VM") + login_timeout = int(params.get("login_timeout", 360)) config_cmds = params.get("config_cmds")