def test_set_memory_limit(self): cg_path = create_random_cg(self.parent_cg_path) # Memory limits are enforced as a page size count, so we have to make # sure we choose a number that's properly aligned. limit = 123 * resource.getpagesize() cg = Cgroup(cg_path) cg.set_memory_limit_in_bytes(limit) self.assertEqual(limit, cg.memory_limit_in_bytes())
def test_set_memory_limit(self): cg_path = create_random_cg(self.parent_cg_path) # Memory limits are enforced as a page size count, so we have to make # sure we choose a number that's properly aligned. limit = 123 * resource.getpagesize() cg = Cgroup(cg_path) cg.set_memory_limit_in_bytes(limit) self.assertEqual(limit, cg.memory_limit_in_bytes())
def enable_memlimit_and_trigger_oom(path): cg = Cgroup(path) cg.open() # Set a memory limit then disable the OOM killer via a wakeup cg.set_memory_limit_in_bytes(1024 * 1024 * 128) # 128 MB cg.wakeup(queue.Queue()) cg.close() test_program = 'l = []\nwhile True:\n l.append(object())' subprocess.Popen(["sudo", "cgexec", "-g", _descriptor_from_cg_path(path), "python", "-c", test_program])
def test_disable_oom_killer(self): cg_path = create_random_cg(self.parent_cg_path) cg = Cgroup(cg_path) cg.open() cg.wakeup(queue.Queue()) self.assertEqual("0", cg.oom_control_status()["oom_kill_disable"]) # The OOM Killer should be disabled if there is a task limit cg.set_memory_limit_in_bytes(1024) cg.wakeup(queue.Queue()) self.assertEqual("1", cg.oom_control_status()["oom_kill_disable"]) cg.close()
def test_disable_oom_killer(self): cg_path = create_random_cg(self.parent_cg_path) cg = Cgroup(cg_path) cg.open() cg.wakeup(queue.Queue(), None) self.assertEqual("0", cg.oom_control_status()["oom_kill_disable"]) # The OOM Killer should be disabled if there is a task limit cg.set_memory_limit_in_bytes(1024) cg.wakeup(queue.Queue(), None) self.assertEqual("1", cg.oom_control_status()["oom_kill_disable"]) cg.close()
def test_wakeup_on_sync(self): cg_path = create_random_cg(self.parent_cg_path) cg = Cgroup(cg_path) cg.open() cg.set_memory_limit_in_bytes(1024) self.assertEqual("0", cg.oom_control_status()["oom_kill_disable"]) index = CgroupIndex(self.parent_cg_path, queue.Queue()) index.open() index.sync() index.close() self.assertEqual("1", cg.oom_control_status()["oom_kill_disable"]) cg.close()
def enable_memlimit_and_trigger_oom(path): cg = Cgroup(path) cg.open() # Set a memory limit then disable the OOM killer via a wakeup cg.set_memory_limit_in_bytes(1024 * 1024 * 128) # 128 MB cg.wakeup(queue.Queue()) cg.close() test_program = 'l = []\nwhile True:\n l.append(object())' subprocess.Popen([ "sudo", "cgexec", "-g", descriptor_from_cg_path(path), "python", "-c", test_program ])
def test_wakeup_on_sync(self): cg_path = create_random_cg(self.parent_cg_path) cg = Cgroup(cg_path) cg.open() cg.set_memory_limit_in_bytes(1024) self.assertEqual("0", cg.oom_control_status()["oom_kill_disable"]) index = CgroupIndex(self.parent_cg_path, queue.Queue()) index.open() index.sync() index.close() self.assertEqual("1", cg.oom_control_status()["oom_kill_disable"]) cg.close()
def set_memlimit(path): logger.info("set memlimit in: %s", path) cg = Cgroup(path) cg.set_memory_limit_in_bytes(1024 * 1024 * 128) # 128 MB