From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 11EBE370 for ; Fri, 6 May 2016 07:52:21 +0200 (CEST) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga104.fm.intel.com with ESMTP; 05 May 2016 22:52:21 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,585,1455004800"; d="scan'208";a="960027674" Received: from unknown (HELO dpdk5.sh.intel.com) ([10.239.129.244]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2016 22:52:19 -0700 From: Zhihong Wang To: dev@dpdk.org Cc: konstantin.ananyev@intel.com, bruce.richardson@intel.com, thomas.monjalon@6wind.com Date: Thu, 5 May 2016 18:46:55 -0400 Message-Id: <1462488421-118990-1-git-send-email-zhihong.wang@intel.com> X-Mailer: git-send-email 2.5.0 Subject: [dpdk-dev] [PATCH 0/6] vhost/virtio performance loopback utility X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 May 2016 05:52:22 -0000 This patch enables vhost/virtio pmd performance loopback test in testpmd. All the features are for general usage. The loopback test focuses on the maximum full-path packet forwarding performance between host and guest, it runs vhost/virtio pmd only without introducing extra overhead. Therefore, the main requirement is traffic generation, since there's no other packet generators like IXIA to help. In current testpmd, io-fwd is the ideal candidate to perform this loopback test because it's the fastest possible forwarding engine: Start testpmd io-fwd in host with 1 vhost pmd port, and start testpmd io-fwd in the connected guest with 1 corresponding virtio pmd port, and these 2 ports form a forwarding loop, packets received by the host vhost pmd port are forwarded to the guest virtio pmd port, and packets received by the guest virtio pmd port are sent to the host vhost pmd port. As to traffic generation, "start tx_first" injects a burst of packets into the loop, which is the ideal way to do that. However 2 issues remain: 1. If only 1 burst of packets are injected in the loop, there will almost definitely be empty rx operations, e.g. When guest virtio pmd port send burst to the host, then it starts the rx immediately, it's likely the packets are still being forwarded by host vhost pmd port and haven't reached the guest yet. We need to fill up the ring to keep all pmds busy. 2. io-fwd doesn't provide retry mechanism, so if packet loss occurs, there won't be a full burst in the loop. To address these issues, this patch: 1. Add an io_retry-fwd in testpmd to prevent most packet losses. 2. Add parameter to enable configurable tx_first burst number. Other related improvements include: 1. Handle all rxqs when multiqueue is enabled: Current testpmd forces a single core for each rxq which causes inconvenience and confusion. 2. Show topology at forwarding start: "show config fwd" also does this, but show it directly can reduce the possibility of mis-configuration. 3. Add throughput information in port statistics display for "show port stats (port_id|all)". Finally there's documentation update. Example on how to enable vhost/virtio performance loopback test: 1. Start testpmd in host with 1 vhost pmd port only. 2. Start testpmd in guest with only 1 virtio pmd port connected to the corresponding vhost pmd port. 3. "set fwd io_retry" in testpmds in both host and guest. 4. "start" in testpmd in guest. 5. "start tx_first 8" in testpmd in host. Then use "show port stats all" to monitor the performance. Zhihong Wang (6): testpmd: add io_retry forwarding testpmd: configurable tx_first burst number testpmd: show throughput in port stats testpmd: handle all rxqs in rss setup testpmd: show topology at forwarding start testpmd: update documentation app/test-pmd/Makefile | 1 + app/test-pmd/cmdline.c | 41 ++++++++ app/test-pmd/config.c | 28 ++++-- app/test-pmd/iofwd-retry.c | 139 ++++++++++++++++++++++++++++ app/test-pmd/testpmd.c | 10 +- app/test-pmd/testpmd.h | 1 + doc/guides/testpmd_app_ug/run_app.rst | 1 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 10 +- 8 files changed, 218 insertions(+), 13 deletions(-) create mode 100644 app/test-pmd/iofwd-retry.c -- 2.5.0