From 6b5f0dd8b96c247778e3b106e1c4c445c76ab6ab Mon Sep 17 00:00:00 2001 From: Guido Trotter <ultrotter@google.com> Date: Mon, 9 Jan 2012 14:40:19 +0000 Subject: [PATCH] Burnin: test set-mem Add new --maxmem-size and --minmem-size options. The old --mem-size option allows setting both at the same time. If --minmem-size is lower than --maxmem-size execute a runtime memory change on all instances, bringing them to their minimum memory size. Signed-off-by: Guido Trotter <ultrotter@google.com> Reviewed-by: Michael Hanselmann <hansmi@google.com> --- tools/burnin | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/tools/burnin b/tools/burnin index a7ac6f65a..54fbf9a40 100755 --- a/tools/burnin +++ b/tools/burnin @@ -124,6 +124,14 @@ OPTIONS = [ cli.cli_option("--disk-growth", dest="disk_growth", help="Disk growth", default="128m", type="string", metavar="<size,size,...>"), cli.cli_option("--mem-size", dest="mem_size", help="Memory size", + default=None, type="unit", metavar="<size>", + completion_suggest=("128M 256M 512M 1G 4G 8G" + " 12G 16G").split()), + cli.cli_option("--maxmem-size", dest="maxmem_size", help="Max Memory size", + default=256, type="unit", metavar="<size>", + completion_suggest=("128M 256M 512M 1G 4G 8G" + " 12G 16G").split()), + cli.cli_option("--minmem-size", dest="minmem_size", help="Min Memory size", default=128, type="unit", metavar="<size>", completion_suggest=("128M 256M 512M 1G 4G 8G" " 12G 16G").split()), @@ -442,6 +450,12 @@ class Burner(object): if len(args) < 1 or options.os is None: Usage() + if options.mem_size: + options.maxmem_size = options.mem_size + options.minmem_size = options.mem_size + elif options.minmem_size > options.maxmem_size: + Err("Maximum memory lower than minimum memory") + supported_disk_templates = (constants.DT_DISKLESS, constants.DT_FILE, constants.DT_SHARED_FILE, @@ -476,8 +490,8 @@ class Burner(object): self.opts = options self.instances = args self.bep = { - constants.BE_MINMEM: options.mem_size, - constants.BE_MAXMEM: options.mem_size, + constants.BE_MINMEM: options.minmem_size, + constants.BE_MAXMEM: options.maxmem_size, constants.BE_VCPUS: options.vcpu_count, } @@ -589,6 +603,18 @@ class Burner(object): remove_instance = lambda name: lambda: self.to_rem.append(name) self.ExecOrQueue(instance, [op], post_process=remove_instance(instance)) + @_DoBatch(False) + def BurnModifyRuntimeMemory(self): + """Alter the runtime memory.""" + Log("Setting instance runtime memory") + for instance in self.instances: + Log("instance %s", instance, indent=1) + tgt_mem = self.bep[constants.BE_MINMEM] + op = opcodes.OpInstanceSetParams(instance_name=instance, + runtime_mem=tgt_mem) + Log("Set memory to %s MB", tgt_mem, indent=2) + self.ExecOrQueue(instance, [op]) + @_DoBatch(False) def BurnGrowDisks(self): """Grow both the os and the swap disks by the requested amount, if any.""" @@ -998,6 +1024,10 @@ class Burner(object): has_err = True try: self.BurnCreateInstances() + + if self.bep[constants.BE_MINMEM] < self.bep[constants.BE_MAXMEM]: + self.BurnModifyRuntimeMemory() + if opts.do_replace1 and opts.disk_template in constants.DTS_INT_MIRROR: self.BurnReplaceDisks1D8() if (opts.do_replace2 and len(self.nodes) > 2 and -- GitLab