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

Tetsuya Mukawa mukawa at igel.co.jp
Fri Feb 26 09:35:50 CET 2016


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.

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