On 2/26/2016 4:36 PM, Tetsuya Mukawa wrote: > On 2016/02/26 13:29, Tetsuya Mukawa wrote: >> On 2016/02/25 16:51, Qiu, Michael wrote: >>> On 2/24/2016 1:10 PM, Tetsuya Mukawa wrote: >>>> On 2016/02/24 11:45, Qiu, Michael wrote: >>>>> Hi, Tetsuya >>>>> >>>>> When I applied your v6 patch, I could reach 9.5Mpps with 64B packet. >>>>> >>>>> But when apply v9 only 8.4 Mpps, could you figure out why has >>>>> performance drop? >>>> Hi Michael, >>>> >>>> Thanks for checking it. >>>> I tried to re-produce it, but I don't see the drop on my environment. >>>> (My cpu is Xeon E5-2697-v2, and the performances of v6 and v9 patch are >>>> almost 5.9Mpps) >>>> Did you use totally same code except for vhost PMD? >>> Yes, totally same code and same platform, only difference is versions of >>> vhost PMD. >>> >>> BTW, I have set the frontend mergeable off. >> I have checked below cases. >> - Case1: Disable mergeable feature in virtio-net PMD. >> - Case2: Disable mergeable feature in virtio-net PMD and use >> '--txqflags=0xf01' option to use simple ring deploying. >> Both cases, I still cannot see the drop. >> >> Anyway, I will send a few patch-series to determine the cause of drop. >> So, could you please apply them and check the performance to determine >> which cause the drop? > Hi Michael, > > I may find what causes the drop. > Could you please restart testpmd on guest when you see the drop, then > check performance again? > > I guess the drop will occur only first time when testpmd on guest and > host is connected. > Here are rough steps. > > 1. Start testpmd on host > 2. Start QEMU > 3. Start testpmd on guest > > Then you will see the drop. > Probably, if testpmd on guest is restarted, then you don't see the drop > again. > > 4. Type 'quit' on guest. > 5. Start testpmd on guest again.
OK, I will help to tested today. Thanks, Michael > If so, I guess the drop is caused by queue notifying. > Could you please let me know whether your issue is above case? > > Thanks, > Tetsuya > >> Thanks, >> Tetsuya >> >>> Thanks, >>> Michael >>>> Thanks, >>>> Tetsuya >>>> >>>>> Thanks, >>>>> Michael >>>>> On 2/9/2016 5:38 PM, Tetsuya Mukawa wrote: >>>>>> The patch introduces a new PMD. This PMD is implemented as thin wrapper >>>>>> of librte_vhost. >>>>>> >>>>>> >>>>>> PATCH v9 changes: >>>>>> - Fix a null pointer access issue implemented in v8 patch. >>>>>> >>>>>> PATCH v8 changes: >>>>>> - Manage ether devices list instead of internal structures list. >>>>>> - Remove needless NULL checking. >>>>>> - Replace "pthread_exit" to "return NULL". >>>>>> - Replace rte_panic to RTE_LOG, also add error handling. >>>>>> - Remove duplicated lines. >>>>>> - Remove needless casting. >>>>>> - Follow coding style. >>>>>> - Remove needless parenthesis. >>>>>> >>>>>> PATCH v7 changes: >>>>>> - Remove needless parenthesis. >>>>>> - Add release note. >>>>>> - Remove needless line wraps. >>>>>> - Add null pointer check in vring_state_changed(). >>>>>> - Free queue memory in eth_queue_release(). >>>>>> - Fix wrong variable name. >>>>>> - Fix error handling code of eth_dev_vhost_create() and >>>>>> rte_pmd_vhost_devuninit(). >>>>>> - Remove needless null checking from rte_pmd_vhost_devinit/devuninit(). >>>>>> - Use port id to create mac address. >>>>>> - Add doxygen style comments in "rte_eth_vhost.h". >>>>>> - Fix wrong comment in "mk/rte.app.mk". >>>>>> >>>>>> PATCH v6 changes: >>>>>> - Remove rte_vhost_driver_pmd_callback_registe(). >>>>>> - Support link status interrupt. >>>>>> - Support queue state changed interrupt. >>>>>> - Add rte_eth_vhost_get_queue_event(). >>>>>> - Support numa node detection when new device is connected. >>>>>> >>>>>> PATCH v5 changes: >>>>>> - Rebase on latest master. >>>>>> - Fix RX/TX routine to count RX/TX bytes. >>>>>> - Fix RX/TX routine not to count as error packets if enqueue/dequeue >>>>>> cannot send all packets. >>>>>> - Fix if-condition checking for multiqueues. >>>>>> - Add "static" to pthread variable. >>>>>> - Fix format. >>>>>> - Change default behavior not to receive queueing event from driver. >>>>>> - Split the patch to separate rte_eth_vhost_portid2vdev(). >>>>>> >>>>>> PATCH v4 changes: >>>>>> - Rebase on latest DPDK tree. >>>>>> - Fix cording style. >>>>>> - Fix code not to invoke multiple messaging handling threads. >>>>>> - Fix code to handle vdev parameters correctly. >>>>>> - Remove needless cast. >>>>>> - Remove needless if-condition before rt_free(). >>>>>> >>>>>> PATCH v3 changes: >>>>>> - Rebase on latest matser >>>>>> - Specify correct queue_id in RX/TX function. >>>>>> >>>>>> PATCH v2 changes: >>>>>> - Remove a below patch that fixes vhost library. >>>>>> The patch was applied as a separate patch. >>>>>> - vhost: fix crash with multiqueue enabled >>>>>> - Fix typos. >>>>>> (Thanks to Thomas, Monjalon) >>>>>> - Rebase on latest tree with above bernard's patches. >>>>>> >>>>>> PATCH v1 changes: >>>>>> - Support vhost multiple queues. >>>>>> - Rebase on "remove pci driver from vdevs". >>>>>> - Optimize RX/TX functions. >>>>>> - Fix resource leaks. >>>>>> - Fix compile issue. >>>>>> - Add patch to fix vhost library. >>>>>> >>>>>> RFC PATCH v3 changes: >>>>>> - Optimize performance. >>>>>> In RX/TX functions, change code to access only per core data. >>>>>> - Add below API to allow user to use vhost library APIs for a port >>>>>> managed >>>>>> by vhost PMD. There are a few limitations. See "rte_eth_vhost.h". >>>>>> - rte_eth_vhost_portid2vdev() >>>>>> To support this functionality, vhost library is also changed. >>>>>> Anyway, if users doesn't use vhost PMD, can fully use vhost library >>>>>> APIs. >>>>>> - Add code to support vhost multiple queues. >>>>>> Actually, multiple queues functionality is not enabled so far. >>>>>> >>>>>> RFC PATCH v2 changes: >>>>>> - Fix issues reported by checkpatch.pl >>>>>> (Thanks to Stephen Hemminger) >>>>>> >>>>>> >>>>>> Tetsuya Mukawa (2): >>>>>> ethdev: Add a new event type to notify a queue state changed event >>>>>> vhost: Add VHOST PMD >>>>>> >>>>>> MAINTAINERS | 4 + >>>>>> config/common_linuxapp | 6 + >>>>>> doc/guides/nics/index.rst | 1 + >>>>>> doc/guides/rel_notes/release_2_3.rst | 4 + >>>>>> drivers/net/Makefile | 4 + >>>>>> drivers/net/vhost/Makefile | 62 ++ >>>>>> drivers/net/vhost/rte_eth_vhost.c | 911 >>>>>> ++++++++++++++++++++++++++++ >>>>>> drivers/net/vhost/rte_eth_vhost.h | 109 ++++ >>>>>> drivers/net/vhost/rte_pmd_vhost_version.map | 11 + >>>>>> lib/librte_ether/rte_ethdev.h | 2 + >>>>>> mk/rte.app.mk | 6 + >>>>>> 11 files changed, 1120 insertions(+) >>>>>> create mode 100644 drivers/net/vhost/Makefile >>>>>> create mode 100644 drivers/net/vhost/rte_eth_vhost.c >>>>>> create mode 100644 drivers/net/vhost/rte_eth_vhost.h >>>>>> create mode 100644 drivers/net/vhost/rte_pmd_vhost_version.map >>>>>> >