All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Marchand <david.marchand@redhat.com>
To: Joyce Kong <joyce.kong@arm.com>,
	Zhihong Wang <zhihong.wang@intel.com>,
	 Adrian Moreno Zapata <amorenoz@redhat.com>
Cc: Maxime Coquelin <maxime.coquelin@redhat.com>,
	 Jerin Jacob Kollanukkaran <jerinj@marvell.com>,
	Xiaolong Ye <xiaolong.ye@intel.com>,
	 Beilei Xing <beilei.xing@intel.com>,
	Jeff Guo <jia.guo@intel.com>,
	 "Mcnamara, John" <john.mcnamara@intel.com>,
	Matan Azrad <matan@mellanox.com>,
	 Shahaf Shuler <shahafs@mellanox.com>,
	Viacheslav Ovsiienko <viacheslavo@mellanox.com>,
	 Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>,
	Phil Yang <phil.yang@arm.com>,
	 "Ruifeng Wang (Arm Technology China)" <ruifeng.wang@arm.com>,
	dev <dev@dpdk.org>, nd <nd@arm.com>
Subject: Re: [dpdk-dev] [PATCH v2 3/6] lib/vhost: restrict pointer aliasing for packed vpmd
Date: Tue, 7 Jul 2020 15:58:56 +0200	[thread overview]
Message-ID: <CAJFAV8y71aph-fKbiKGveXJH6+y_9TYDfuZjTePgiSkxvUv9ag@mail.gmail.com> (raw)
In-Reply-To: <20200706074930.54299-4-joyce.kong@arm.com>

On Mon, Jul 6, 2020 at 9:50 AM Joyce Kong <joyce.kong@arm.com> wrote:
>
> Restrict pointer aliasing to allow the compiler to vectorize loop
> more aggressively.
>
> With this patch, a 9.6% improvement is observed in throughput for
> the packed virtio-net PVP case, and a 2.8% improvement in throughput
> for the packed virtio-user PVP case. All performance data are measured
> under 0.001% acceptable packet loss with 1 core on both vhost and
> virtio side.
>
> Signed-off-by: Joyce Kong <joyce.kong@arm.com>
> Reviewed-by: Phil Yang <phil.yang@arm.com>
> ---
>  drivers/net/virtio/virtio_rxtx_simple_neon.c |  5 +++--
>  lib/librte_vhost/virtio_net.c                | 14 +++++++-------
>  2 files changed, 10 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/net/virtio/virtio_rxtx_simple_neon.c b/drivers/net/virtio/virtio_rxtx_simple_neon.c
> index 5febfb0f5..31824a931 100644
> --- a/drivers/net/virtio/virtio_rxtx_simple_neon.c
> +++ b/drivers/net/virtio/virtio_rxtx_simple_neon.c
> @@ -36,8 +36,9 @@
>   * - nb_pkts < RTE_VIRTIO_DESC_PER_LOOP, just return no packet
>   */
>  uint16_t
> -virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf
> -               **__rte_restrict rx_pkts, uint16_t nb_pkts)
> +virtio_recv_pkts_vec(void *rx_queue,
> +               struct rte_mbuf **__rte_restrict rx_pkts,
> +               uint16_t nb_pkts)
>  {
>         struct virtnet_rx *rxvq = rx_queue;
>         struct virtqueue *vq = rxvq->vq;

For the neon bits, I trust you.


> diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
> index 751c1f373..e60358251 100644
> --- a/lib/librte_vhost/virtio_net.c
> +++ b/lib/librte_vhost/virtio_net.c
> @@ -1133,8 +1133,8 @@ virtio_dev_rx_single_packed(struct virtio_net *dev,
>
>  static __rte_noinline uint32_t
>  virtio_dev_rx_packed(struct virtio_net *dev,
> -                    struct vhost_virtqueue *vq,
> -                    struct rte_mbuf **pkts,
> +                    struct vhost_virtqueue *__rte_restrict vq,
> +                    struct rte_mbuf **__rte_restrict pkts,
>                      uint32_t count)
>  {
>         uint32_t pkt_idx = 0;

But for the generic part, I'd like to get others opinion.
Added Zhihong and Adrian.


> @@ -1219,7 +1219,7 @@ virtio_dev_rx(struct virtio_net *dev, uint16_t queue_id,
>
>  uint16_t
>  rte_vhost_enqueue_burst(int vid, uint16_t queue_id,
> -       struct rte_mbuf **pkts, uint16_t count)
> +       struct rte_mbuf **__rte_restrict pkts, uint16_t count)
>  {
>         struct virtio_net *dev = get_device(vid);
>
> @@ -2124,9 +2124,9 @@ free_zmbuf(struct vhost_virtqueue *vq)
>
>  static __rte_noinline uint16_t
>  virtio_dev_tx_packed_zmbuf(struct virtio_net *dev,
> -                          struct vhost_virtqueue *vq,
> +                          struct vhost_virtqueue *__rte_restrict vq,
>                            struct rte_mempool *mbuf_pool,
> -                          struct rte_mbuf **pkts,
> +                          struct rte_mbuf **__rte_restrict pkts,
>                            uint32_t count)
>  {
>         uint32_t pkt_idx = 0;
> @@ -2160,9 +2160,9 @@ virtio_dev_tx_packed_zmbuf(struct virtio_net *dev,
>
>  static __rte_noinline uint16_t
>  virtio_dev_tx_packed(struct virtio_net *dev,
> -                    struct vhost_virtqueue *vq,
> +                    struct vhost_virtqueue *__rte_restrict vq,
>                      struct rte_mempool *mbuf_pool,
> -                    struct rte_mbuf **pkts,
> +                    struct rte_mbuf **__rte_restrict pkts,
>                      uint32_t count)
>  {
>         uint32_t pkt_idx = 0;
> --
> 2.27.0
>


  reply	other threads:[~2020-07-07 13:59 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-11  3:32 [dpdk-dev] [PATCH v1 0/2] virtio: restrict pointer aliasing for loops vectorization Joyce Kong
2020-06-11  3:32 ` [dpdk-dev] [PATCH v1 1/2] net/virtio: restrict pointer aliasing for NEON vpmd Joyce Kong
2020-06-23  8:47   ` Maxime Coquelin
2020-06-23  9:05     ` Phil Yang
2020-06-24  2:58       ` Joyce Kong
2020-06-24  4:16         ` Stephen Hemminger
2020-06-11  3:32 ` [dpdk-dev] [PATCH v1 2/2] lib/vhost: restrict pointer aliasing for packed path Joyce Kong
2020-07-07 16:25   ` Adrian Moreno
2020-07-10  3:15     ` Joyce Kong
2020-07-06  7:49 ` [dpdk-dev] [PATCH v2 0/6] Restrict pointer aliasing with a common wrapper Joyce Kong
2020-07-06  7:49   ` [dpdk-dev] [PATCH v2 1/6] lib/eal: add a common wrapper for restricted pointers Joyce Kong
2020-07-07  2:15     ` Jerin Jacob
2020-07-07  2:24     ` Phil Yang
2020-07-07  2:40     ` Ruifeng Wang
2020-07-07 13:57     ` David Marchand
2020-07-08  2:46       ` Joyce Kong
2020-07-06  7:49   ` [dpdk-dev] [PATCH v2 2/6] net/virtio: restrict pointer aliasing for NEON vpmd Joyce Kong
2020-07-06  7:49   ` [dpdk-dev] [PATCH v2 3/6] lib/vhost: restrict pointer aliasing for packed vpmd Joyce Kong
2020-07-07 13:58     ` David Marchand [this message]
2020-07-06  7:49   ` [dpdk-dev] [PATCH v2 4/6] net/i40e: replace restrict with rte restrict Joyce Kong
2020-07-07  2:25     ` Phil Yang
2020-07-07  2:43     ` Ruifeng Wang
2020-07-07 14:00     ` David Marchand
2020-07-08  3:21       ` Joyce Kong
2020-07-09  9:57         ` David Marchand
2020-07-10  2:45           ` Joyce Kong
2020-07-06  7:49   ` [dpdk-dev] [PATCH v2 5/6] examples/performance-thread: replace restrict with wrapper Joyce Kong
2020-07-07  2:27     ` Phil Yang
2020-07-07  2:45     ` Ruifeng Wang
2020-07-06  7:49   ` [dpdk-dev] [PATCH v2 6/6] net/mlx5: replace restrict keyword with rte restrict Joyce Kong
2020-07-07  2:28     ` Phil Yang
2020-07-07  2:47     ` Ruifeng Wang
2020-07-09 13:52   ` [dpdk-dev] [PATCH v2 0/6] Restrict pointer aliasing with a commonwrapper Morten Brørup
2020-07-10  3:17     ` Joyce Kong
2020-07-10  2:38 ` [dpdk-dev] [PATCH v3 0/3] restrict pointer aliasing with a common wrapper Joyce Kong
2020-07-10  2:38   ` [dpdk-dev] [PATCH v3 1/3] lib/eal: add a common wrapper for restricted pointers Joyce Kong
2020-07-10  2:38   ` [dpdk-dev] [PATCH v3 2/3] net/virtio: restrict pointer aliasing for NEON vpmd Joyce Kong
2020-07-10  2:38   ` [dpdk-dev] [PATCH v3 3/3] lib/vhost: restrict pointer aliasing for packed vpmd Joyce Kong
2020-07-10 13:41     ` Adrian Moreno
2020-07-10 14:05   ` [dpdk-dev] [PATCH v3 0/3] restrict pointer aliasing with a common wrapper David Marchand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAJFAV8y71aph-fKbiKGveXJH6+y_9TYDfuZjTePgiSkxvUv9ag@mail.gmail.com \
    --to=david.marchand@redhat.com \
    --cc=amorenoz@redhat.com \
    --cc=beilei.xing@intel.com \
    --cc=dev@dpdk.org \
    --cc=honnappa.nagarahalli@arm.com \
    --cc=jerinj@marvell.com \
    --cc=jia.guo@intel.com \
    --cc=john.mcnamara@intel.com \
    --cc=joyce.kong@arm.com \
    --cc=matan@mellanox.com \
    --cc=maxime.coquelin@redhat.com \
    --cc=nd@arm.com \
    --cc=phil.yang@arm.com \
    --cc=ruifeng.wang@arm.com \
    --cc=shahafs@mellanox.com \
    --cc=viacheslavo@mellanox.com \
    --cc=xiaolong.ye@intel.com \
    --cc=zhihong.wang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.