From: Yongseok Koh <yskoh@mellanox.com>
To: "Nélio Laranjeiro" <nelio.laranjeiro@6wind.com>,
"Adrien Mazarguil" <adrien.mazarguil@6wind.com>
Cc: Shahaf Shuler <shahafs@mellanox.com>, "dev@dpdk.org" <dev@dpdk.org>
Subject: [dpdk-dev] [RFC v1] net/mlx5: improve out of box performance
Date: Fri, 8 Jun 2018 00:38:23 +0000 [thread overview]
Message-ID: <573D7DCB-6E17-4843-9EA1-C00352998BE8@mellanox.com> (raw)
In mlx5 PMD, there are multiple Tx burst functions,
mlx5_tx_burst()
mlx5_tx_burst_mpw()
mlx5_tx_burst_mpw_inline()
mlx5_tx_burst_burst_empw()
mlx5_tx_burst_raw_vec()
mlx5_tx_burst_vec()
To provide better user experience and the best out-of-box performance,
those will need to be consolidated. There will be only one non-vector
function. As mlx5_tx_burst_vec() calls mlx5_tx_burst_raw_vec(), there'll be
no change with vector fuctions.
The reason for multiple Tx burst functions was because newer device has
enhanced features to improve throughput by further saving PCIe BW. For the
new features (e.g. Tx packet inlining), new Tx burst functions had been
added incrementally. Such new functions were to support new type of Tx
descriptors. However, problem with selecting a Tx burst statically is,
although newer devices support all the descriptor types including legacy
ones, the new function doesn't fall back to the old modes.
Another issue is that it is very hard to introduce a new feature on Tx
path. For example, mlx5 supports TSO but currently it is only supported by
the basic mlx5_tx_burst(). We could've added TSO support to other Tx
bursts but it is so much painful to add the same code in multiple
locations. And it isn't even a good idea from maintenance perspective. As a
result, even though a user wants to enjoy Mellanox's best-in-class
performance, if TSO is required, mlx5 PMD can't satisfy the user.
The consolidated Tx burst function will be all-inclusive. This will support
all types of Tx descriptors (WQE) and HW offloads. WQE type for a
transmitting packet would be determined dynamically. Decision for packet
inline will be made by sensing PCIe bottleneck.
And selection between the consolidated function and the existing vector
function will still be done during configuration. But CPU architecture will
also be taken into account.
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
next reply other threads:[~2018-06-08 0:38 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-08 0:38 Yongseok Koh [this message]
2019-03-01 1:15 ` [dpdk-dev] [RFC] " Yongseok Koh
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=573D7DCB-6E17-4843-9EA1-C00352998BE8@mellanox.com \
--to=yskoh@mellanox.com \
--cc=adrien.mazarguil@6wind.com \
--cc=dev@dpdk.org \
--cc=nelio.laranjeiro@6wind.com \
--cc=shahafs@mellanox.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).