X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=vnfs%2Fqemu%2Fqemu.py;h=67dbfab412546c0ae8d84a8cc7ec1ce1e6a5509a;hb=7bae8ffe122b7d62eae03a2393182342f1f8fe85;hp=c9569ae687d0d4170fc67938d338dcd845105842;hpb=5aa0dc99f1cf9bf1a0a1d86143d6a1cbcc778691;p=vswitchperf.git diff --git a/vnfs/qemu/qemu.py b/vnfs/qemu/qemu.py index c9569ae6..67dbfab4 100644 --- a/vnfs/qemu/qemu.py +++ b/vnfs/qemu/qemu.py @@ -81,11 +81,18 @@ class IVnfQemu(IVnf): self._testpmd_fwd_mode, 'io') self._testpmd_fwd_mode = 'io' + guest_smp = int(get_test_param('guest_smp', 0)) + if guest_smp: + override_list = [guest_smp] * (self._number + 1) + S.setValue('GUEST_SMP', override_list) + name = 'Client%d' % self._number vnc = ':%d' % self._number - # don't use taskset to affinize main qemu process; It causes hangup - # of 2nd VM in case of DPDK. It also slows down VM responsivnes. - self._cmd = ['sudo', '-E', S.getValue('QEMU_BIN'), + # NOTE: affinization of main qemu process can cause hangup of 2nd VM + # in case of DPDK usage. It can also slow down VM response time. + cpumask = ",".join(S.getValue('GUEST_CORE_BINDING')[self._number]) + self._cmd = ['sudo', '-E', 'taskset', '-c', cpumask, + S.getValue('TOOLS')['qemu-system'], '-m', S.getValue('GUEST_MEMORY')[self._number], '-smp', str(S.getValue('GUEST_SMP')[self._number]), '-cpu', 'host,migratable=off', @@ -230,14 +237,18 @@ class IVnfQemu(IVnf): stdin=proc.stdout) proc.wait() + guest_core_binding = int(get_test_param('guest_core_binding', 0)) for cpu in range(0, int(S.getValue('GUEST_SMP')[self._number])): match = None for line in output.decode(cur_locale).split('\n'): match = re.search(thread_id % cpu, line) if match: - self._affinitize_pid( - S.getValue('GUEST_CORE_BINDING')[self._number][cpu], - match.group(1)) + if guest_core_binding: + self._affinitize_pid(guest_core_binding, match.group(1)) + else: + self._affinitize_pid( + S.getValue('GUEST_CORE_BINDING')[self._number][cpu], + match.group(1)) break if not match: @@ -389,25 +400,14 @@ class IVnfQemu(IVnf): '/DPDK/app/test-pmd') self.execute_and_wait('make clean') self.execute_and_wait('make') - if int(S.getValue('GUEST_NIC_QUEUES')[self._number]): - self.execute_and_wait( - './testpmd {} -n4 --socket-mem 512 --'.format( - S.getValue('GUEST_TESTPMD_CPU_MASK')[self._number]) + - ' --burst=64 -i --txqflags=0xf00 ' + - '--nb-cores={} --rxq={} --txq={} '.format( - S.getValue('GUEST_TESTPMD_NB_CORES')[self._number], - S.getValue('GUEST_TESTPMD_TXQ')[self._number], - S.getValue('GUEST_TESTPMD_RXQ')[self._number]) + - '--disable-hw-vlan', 60, "Done") - else: - self.execute_and_wait( - './testpmd {} -n 4 --socket-mem 512 --'.format( - S.getValue('GUEST_TESTPMD_CPU_MASK')[self._number]) + - ' --burst=64 -i --txqflags=0xf00 ' + - '--disable-hw-vlan', 60, "Done") + + # get testpmd settings from CLI + testpmd_params = get_test_param('guest_testpmd_params', + S.getValue('GUEST_TESTPMD_PARAMS')[self._number]) + + self.execute_and_wait( './testpmd {}'.format(testpmd_params), 60, "Done") self.execute('set fwd ' + self._testpmd_fwd_mode, 1) - self.execute_and_wait('start', 20, - 'TX RS bit threshold=.+ - TXQ flags=0xf00') + self.execute_and_wait('start', 20, 'testpmd>') def _configure_l2fwd(self): """