[dpdk-dev] [PATCH v9 0/2] Add VHOST PMD

Qiu, Michael michael.qiu at intel.com
Tue Mar 1 03:00:02 CET 2016


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
>>>>>>
>



More information about the dev mailing list