From f512026e6bed07dc7ad3335e6244bc2fd21fa023 Mon Sep 17 00:00:00 2001 From: Li Jin Date: Fri, 26 Jan 2018 10:39:28 +0800 Subject: [PATCH] Balloon check:Modify ballon min_size calculation formula 1. When windows guest mem is small(e.g.1024M), calculated mem min_size will be larger than ori_mem if ratio=0.5, which will lead balloon cases fail. 2. When do balloon operation in linux guest, we should consider crashkernel value as well,leaving enough memory for guest to avoid guest OOM. So modify the formula and leave a balloon buffer(300M in default) for guest min_sz. Signed-off-by: Li Jin --- qemu/tests/balloon_check.py | 6 +++--- qemu/tests/cfg/balloon_check.cfg | 4 ---- qemu/tests/cfg/balloon_hotplug.cfg | 4 ---- qemu/tests/cfg/balloon_illegal.cfg | 4 ---- qemu/tests/cfg/balloon_in_use.cfg | 1 - qemu/tests/cfg/balloon_service.cfg | 1 - qemu/tests/cfg/balloon_stress.cfg | 1 - qemu/tests/cfg/win_virtio_driver_update_test.cfg | 1 - 8 files changed, 3 insertions(+), 19 deletions(-) diff --git a/qemu/tests/balloon_check.py b/qemu/tests/balloon_check.py index 70fb2846..d6cf2444 100644 --- a/qemu/tests/balloon_check.py +++ b/qemu/tests/balloon_check.py @@ -20,7 +20,6 @@ class BallooningTest(MemoryBaseTest): def __init__(self, test, params, env): self.test_round = 0 - self.ratio = float(params.get("ratio", 0.1)) super(BallooningTest, self).__init__(test, params, env) self.vm = env.get_vm(params["main_vm"]) @@ -183,19 +182,20 @@ class BallooningTest(MemoryBaseTest): max_size = self.ori_mem min_size = self.params.get("minmem", "512M") min_size = int(float(utils_misc.normalize_data_size(min_size))) + balloon_buffer = self.params.get("balloon_buffer", 300) if self.params.get('os_type') == 'windows': logging.info("Get windows miminum balloon value:") self.vm.balloon(1) balloon_timeout = self.params.get("balloon_timeout", 900) self.wait_for_balloon_complete(balloon_timeout) - used_size = int(self.get_ballooned_memory() + self.ratio * self.ori_mem) + used_size = min((self.get_ballooned_memory() + balloon_buffer), max_size) self.vm.balloon(max_size) self.wait_for_balloon_complete(balloon_timeout) self.ori_gmem = self.get_memory_status() else: vm_total = self.get_memory_status() vm_mem_free = self.get_free_mem() - used_size = vm_total - vm_mem_free + 16 + used_size = min((self.ori_mem - vm_mem_free + balloon_buffer), max_size) if balloon_type == "enlarge": min_size = self.current_mmem elif balloon_type == "evict": diff --git a/qemu/tests/cfg/balloon_check.cfg b/qemu/tests/cfg/balloon_check.cfg index 55e719c0..2154c12a 100644 --- a/qemu/tests/cfg/balloon_check.cfg +++ b/qemu/tests/cfg/balloon_check.cfg @@ -7,10 +7,6 @@ balloon_dev_add_bus = yes iterations = 5 free_mem_cmd = cat /proc/meminfo |grep MemFree - Linux: - ratio = 1 - Windows: - ratio = 0.5 variants: - balloon_base: diff --git a/qemu/tests/cfg/balloon_hotplug.cfg b/qemu/tests/cfg/balloon_hotplug.cfg index 1dfce90e..89b6eb77 100644 --- a/qemu/tests/cfg/balloon_hotplug.cfg +++ b/qemu/tests/cfg/balloon_hotplug.cfg @@ -8,10 +8,6 @@ free_mem_cmd = cat /proc/meminfo |grep MemFree reboot_method = shell shutdown_method = shell - Linux: - ratio = 1 - Windows: - ratio = 0.5 run_sub_test_after_balloon = no test_tags = "evict enlarge" balloon_type_evict = evict diff --git a/qemu/tests/cfg/balloon_illegal.cfg b/qemu/tests/cfg/balloon_illegal.cfg index 5b619973..b6335078 100644 --- a/qemu/tests/cfg/balloon_illegal.cfg +++ b/qemu/tests/cfg/balloon_illegal.cfg @@ -6,10 +6,6 @@ balloon_dev_devid = balloon0 balloon_dev_add_bus = yes free_mem_cmd = cat /proc/meminfo | grep MemFree - Linux: - ratio = 1 - Windows: - ratio = 0.5 illegal_value_check = yes test_tags = "evict enlarge" balloon_type_evict = evict diff --git a/qemu/tests/cfg/balloon_in_use.cfg b/qemu/tests/cfg/balloon_in_use.cfg index d15b0e72..84789d8b 100644 --- a/qemu/tests/cfg/balloon_in_use.cfg +++ b/qemu/tests/cfg/balloon_in_use.cfg @@ -5,7 +5,6 @@ balloon_dev_devid = balloon0 balloon_dev_add_bus = yes repeat_times = 5 - ratio = 0.5 wait_bg_time = 720 time_for_video = 600 start_vm = yes diff --git a/qemu/tests/cfg/balloon_service.cfg b/qemu/tests/cfg/balloon_service.cfg index ed3a3a6f..b5143391 100644 --- a/qemu/tests/cfg/balloon_service.cfg +++ b/qemu/tests/cfg/balloon_service.cfg @@ -25,7 +25,6 @@ set_balloon_property = "guest-stats-polling-interval" get_balloon_property = "guest-stats" polling_sleep_time = 20 - ratio = 0.1 run_sub_test_after_balloon = no test_tags = "evict enlarge" balloon_type_evict = evict diff --git a/qemu/tests/cfg/balloon_stress.cfg b/qemu/tests/cfg/balloon_stress.cfg index 2533e323..ffa53d26 100644 --- a/qemu/tests/cfg/balloon_stress.cfg +++ b/qemu/tests/cfg/balloon_stress.cfg @@ -24,7 +24,6 @@ play_video_cmd = '"%s" "%s" /play /fullscreen' time_for_video = 1200 guest_alias = "Win2008-sp2-32:2k8\x86,Win2008-sp2-64:2k8\amd64,Win2008-r2-64:2k8\amd64,Win2012-64:2k12\amd64,Win2012-64r2:2k12\amd64" - ratio = 0.5 Linux: # Use a low stress to make sure guest can response during stress stress_args = "--cpu 4 --io 4 --vm 2 --vm-bytes 256M" diff --git a/qemu/tests/cfg/win_virtio_driver_update_test.cfg b/qemu/tests/cfg/win_virtio_driver_update_test.cfg index 20e9e119..db589614 100644 --- a/qemu/tests/cfg/win_virtio_driver_update_test.cfg +++ b/qemu/tests/cfg/win_virtio_driver_update_test.cfg @@ -43,7 +43,6 @@ run_bgstress = balloon_check virtio_balloon_pause = 10.0 free_mem_cmd = cat /proc/meminfo |grep MemFree - ratio = 0.5 run_sub_test_after_balloon = no test_tags = "evict enlarge" balloon_type_evict = evict -- GitLab