From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 9EB313B5 for ; Mon, 21 Sep 2015 09:35:02 +0200 (CEST) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP; 21 Sep 2015 00:35:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.17,566,1437462000"; d="scan'208";a="793961013" Received: from shvmail01.sh.intel.com ([10.239.29.42]) by fmsmga001.fm.intel.com with ESMTP; 21 Sep 2015 00:35:01 -0700 Received: from shecgisg003.sh.intel.com (shecgisg003.sh.intel.com [10.239.29.90]) by shvmail01.sh.intel.com with ESMTP id t8L7Yw2U029089; Mon, 21 Sep 2015 15:34:58 +0800 Received: from shecgisg003.sh.intel.com (localhost [127.0.0.1]) by shecgisg003.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP id t8L7YuBE004674; Mon, 21 Sep 2015 15:34:58 +0800 Received: (from yliu84x@localhost) by shecgisg003.sh.intel.com (8.13.6/8.13.6/Submit) id t8L7YtO3004670; Mon, 21 Sep 2015 15:34:55 +0800 From: Yong Liu To: dts@dpdk.org Date: Mon, 21 Sep 2015 15:34:50 +0800 Message-Id: <1442820890-4631-2-git-send-email-yong.liu@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1442820890-4631-1-git-send-email-yong.liu@intel.com> References: <1442820890-4631-1-git-send-email-yong.liu@intel.com> Subject: [dts] [PATCH 2/2] VT: Support cpu simulate topo in virtualization scenario module X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Sep 2015 07:35:03 -0000 From: Marvin Liu Scene module add "cpu_topo" parameter which will be used as option of DUT instance. "cpu_topo" should like "2S/5C/2T" mean that this virtual machine contain 20 lcores. User can utilize "cpu_topo" and "cpu_pin" to make sure simulate topo same as real topo. Signed-off-by: Marvin Liu diff --git a/framework/virt_base.py b/framework/virt_base.py index 16e6d24..4a445d1 100644 --- a/framework/virt_base.py +++ b/framework/virt_base.py @@ -224,7 +224,7 @@ class VirtBase(object): self.load_global_config() self.load_local_config(self.suite) - def start(self, load_config=True, set_target=True, auto_portmap=True, bind_dev=True): + def start(self, load_config=True, set_target=True, cpu_topo='', auto_portmap=True, bind_dev=True): """ Start VM and instantiate the VM with VirtDut. """ @@ -238,7 +238,7 @@ class VirtBase(object): self._start_vm() # connect vm dut and init running environment - vm_dut = self.instantiate_vm_dut(set_target, auto_portmap) + vm_dut = self.instantiate_vm_dut(set_target, cpu_topo, auto_portmap) except Exception as vm_except: if self.handle_exception(vm_except): print dts.RED("Handled expection " + str(type(vm_except))) @@ -293,7 +293,7 @@ class VirtBase(object): """ NotImplemented - def instantiate_vm_dut(self, set_target=True, auto_portmap=True, bind_dev=True): + def instantiate_vm_dut(self, set_target=True, cpu_topo='', auto_portmap=True, bind_dev=True): """ Instantiate the Dut class for VM. """ @@ -317,7 +317,8 @@ class VirtBase(object): serializer, self.virt_type, self.vm_name, - self.suite) + self.suite, + cpu_topo) except: raise exception.VirtDutConnectException return None diff --git a/framework/virt_scene.py b/framework/virt_scene.py index 7eb475d..896d86b 100644 --- a/framework/virt_scene.py +++ b/framework/virt_scene.py @@ -193,8 +193,19 @@ class VirtScene(object): else: model = 'host' - cores = self.host_dut.virt_pool.alloc_cpu(vm=vm_name, number=num, - socket=numa) + cpu_topo = '' + if 'cpu_topo' in cpu_conf.keys(): + cpu_topo = cpu_conf['cpu_topo'] + + pin_cores = [] + if 'cpu_pin' in cpu_conf.keys(): + pin_cores = cpu_conf['cpu_pin'].split() + + if len(pin_cores): + cores = self.host_dut.virt_pool.alloc_cpu(vm=vm_name, corelist=pin_cores) + else: + cores = self.host_dut.virt_pool.alloc_cpu(vm=vm_name, number=num, + socket=numa) core_cfg = '' for core in cores: core_cfg += '%s ' % core @@ -203,6 +214,7 @@ class VirtScene(object): cpu_param['number'] = num cpu_param['model'] = model cpu_param['cpupin'] = core_cfg + cpu_param['cputopo'] = cpu_topo # replace with allocated cpus params['cpu'] = [cpu_param] @@ -419,6 +431,12 @@ class VirtScene(object): # update vm name vm.params[index]['name'][0]['name'] = vm.vm_name + def get_cputopo(self, params): + for param in params: + if 'cpu' in param.keys(): + cpu_topo = param['cpu'][0]['cputopo'] + return cpu_topo + def start_vms(self): self.vms = [] if self.vm_type == 'kvm': @@ -434,9 +452,12 @@ class VirtScene(object): scene_params = self.vm_confs[vm_name] # reload merged configurations self.merge_params(vm, scene_params) + # get cpu topo + topo = self.get_cputopo(scene_params) try: vm_dut = vm.start(load_config=False, set_target=False, - auto_portmap=self.auto_portmap) + auto_portmap=self.auto_portmap, + cpu_topo=topo) if vm_dut is None: raise Exception("Set up VM ENV failed!") -- 1.9.3