def executeExperiment(self, params, XensToVms): for key, value in XensToVms.iteritems(): vms = value for vm in vms: self.NodeToFile[vm].write("round(N)\t\t\tavgCPU(%)\t\t\tvarCPU(%)\t\t\tdevstdCPU(%)\t\t\tavgTS(%)\t\t\tjitter(ms)\t\t\tloss(%)\n") rate = params[1] interval = params[2] length = (params[0])*(interval*2) delay = params[3] consec_error = 0 exper_error = 0 limit_consec = int(self.nround/4) limit_exper = int(self.nround/2) for server in self.servers: print "Starting Server %s" % server.host server.start() print "Max Sporadic Errors %s - Consecutive Errors %s" %(limit_exper, limit_consec) i = 0 while i < self.nround: if (consec_error == limit_consec or exper_error == limit_exper): print "Exit...Reach Limit" break XensToPollers = {} for client in self.clients: print "Client %s vs Server %s: Run %s - Rate %sm" % (client.host, client.server, (i+1), params[1]) client.start(str(length), rate) for xen, vms in XensToVms.iteritems(): XensToPollers[xen]=(XentopPoller(params[0], interval, vms, xen, delay)) for xen, poller in XensToPollers.iteritems(): poller.start() for xen, poller in XensToPollers.iteritems(): poller.join() for client in self.clients: client.join() jitter = "N/A" loss = "N/A" jitter = self.getClientsJitter() loss = self.getClientsLoss() for key, value in XensToVms.iteritems(): vms = value for vm in vms: self.NodeToFile[vm].write("%s\t\t\t\t%s\t\t\t\t%s\t\t\t\t%s\t\t\t\t%s\t\t\t\t%s\t\t\t\t%s\n" %(i+1, XensToPollers[key].getAvgCPU(vm), XensToPollers[key].getVarCPU(vm), XensToPollers[key].getDEVCPU(vm), XensToPollers[key].getAvgTS(vm), jitter, loss)) if (isNumber(loss) and float(loss) < 2.0): consec_error = 0 i = i + 1 else: print "Error Too Loss %s Repeat Run - After %s Consecutive Error Or %s Sporadic Error The Experiment Stops" %(loss, limit_consec, limit_exper) consec_error = consec_error + 1 exper_error = exper_error + 1 sleep(2) for key, value in XensToVms.iteritems(): vms = value for vm in vms: self.NodeToFile[vm].close()
def executeExperiment(self, params, VMs): for VM in VMs: self.NodeToFile[VM].write("round(N)\t\t\tavgCPU(%)\t\t\tvarCPU(%)\t\t\tdevstdCPU(%)\t\t\tavgTS(%)\t\t\tjitter(ms)\t\t\tloss(%)\n") rate = params[1] interval = params[2] length = (params[0] + params[3])*(interval*2) delay = params[3] consec_error = 0 exper_error = 0 limit_consec = int(self.nround/4) + 1 limit_exper = int(self.nround/2) + 1 for server in self.servers: print "Starting Server %s" % server.host server.start() print "Max Sporadic Errors %s - Consecutive Errors %s" %(limit_exper, limit_consec) i = 0 while i < self.nround: if (consec_error == limit_consec or exper_error == limit_exper): print "Exit...Reach Limit" break for client in self.clients: print "Client %s vs Server %s: Run %s - Rate %sm" % (client.host, client.server, (i+1), params[1]) client.start(str(length), rate) poller = ZabbixPoller(params[0], interval, VMs, delay) poller.start() poller.join() for client in self.clients: client.join() jitter = "N/A" loss = "N/A" jitter = self.getClientsJitter() loss = self.getClientsLoss() for VM in VMs: self.NodeToFile[VM].write("%s\t\t\t\t%s\t\t\t\t%s\t\t\t\t%s\t\t\t\t%s\t\t\t\t%s\t\t\t\t%s\n" %(i+1, poller.getAvgCPU(VM), poller.getVarCPU(VM), poller.getDEVCPU(VM), poller.getAvgTS(VM), jitter, loss)) print "Poller retrieve %s samples for %s: %s" % (len(poller.cpu_perc[VM]), VM, poller.cpu_perc[VM]) if (isNumber(loss) and float(loss) < 2.0): consec_error = 0 i = i + 1 else: print "Error Too Loss %s Repeat Run - After %s Consecutive Error Or %s Sporadic Error The Experiment Stops" %(loss, limit_consec, limit_exper) consec_error = consec_error + 1 exper_error = exper_error + 1 sleep(2) for VM in VMs: self.NodeToFile[VM].close()