Reverting the patch is not a good idea and would not help in all the
cases mentioned - since it would impact all architectures, not only
s390x, would also impact z13 and zEC12 where this should not be changed
and would move us away from the upstream code base.

Instead please think about introducing a kernel config option that allows to 
toggle Striding RQ.
A kernel config option allows to set different defaults for different 
architectures, hence it could be at least changed for s390x in general.

** Changed in: ubuntu-z-systems
   Importance: Undecided => Medium

** Changed in: linux (Ubuntu)
   Importance: Undecided => Medium

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1868113

Title:
  [Ubuntu 20.04]  Striding RQ as Default for ConnectX-4

Status in Ubuntu on IBM z Systems:
  Incomplete
Status in linux package in Ubuntu:
  Incomplete

Bug description:
  ello,
  Within our Network Performance runs in the RoCE Express 2(.1) area, we 
noticed a performance regression with streaming workloads which could be 
mitigated by using an ethtool setting.
   
  The Commit which switched the default value from "Striding RQ" to "Legacy RQ" 
for ConnectX-4 devices (RoCE Express 2(.1)) is attached here:
  commit 5ffd81943d7a57423f204cd5844bf430b5634472 (refs/bisect/bad)
  Author: Tariq Toukan <tar...@mellanox.com>
  Date:   Tue Feb 20 15:17:54 2018 +0200
      net/mlx5e: RX, Always prefer Linear SKB configuration
      Prefer the linear SKB configuration of Legacy RQ over the
      non-linear one of Striding RQ.
      This implies that ConnectX-4 LX now uses legacy RQ by default,
      as it does not support the linear configuration of Striding RQ.
      Signed-off-by: Tariq Toukan <tar...@mellanox.com>
      Signed-off-by: Saeed Mahameed <sae...@mellanox.com>
   
  diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c 
b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
  index 2c634e50d051..333d4ed52b94 100644
  --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
  +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
  @@ -4405,9 +4405,16 @@ void mlx5e_build_nic_params(struct mlx5_core_dev *mdev,
          MLX5E_SET_PFLAG(params, MLX5E_PFLAG_RX_CQE_COMPRESS, 
params->rx_cqe_compress_def);
          /* RQ */
  -       if (mlx5e_striding_rq_possible(mdev, params))
  -               MLX5E_SET_PFLAG(params, MLX5E_PFLAG_RX_STRIDING_RQ,
  -                               !slow_pci_heuristic(mdev));
  +       /* Prefer Striding RQ, unless any of the following holds:
  +        * - Striding RQ configuration is not possible/supported.
  +        * - Slow PCI heuristic.
  +        * - Legacy RQ would use linear SKB while Striding RQ would use 
non-linear.
  +        */
  +       if (!slow_pci_heuristic(mdev) &&
  +           mlx5e_striding_rq_possible(mdev, params) &&
  +           (mlx5e_rx_mpwqe_is_linear_skb(mdev, params) ||
  +            !mlx5e_rx_is_linear_skb(mdev, params)))
  +               MLX5E_SET_PFLAG(params, MLX5E_PFLAG_RX_STRIDING_RQ, true);
          mlx5e_set_rq_type(mdev, params);
          mlx5e_init_rq_type_params(mdev, params);
   
  We have modified the upstream-kernel to allow us running of measurements and 
compare differences between Legacy RQ vs Striding RQ. Here is an example below: 
   
  Kernel used: 5.4.0-rc7
  The measurements run on a dedicated machine (z14) using uperf with streaming 
profiles (MTU size 1500).
   
  Example throughput drop:
  (traffic via a shared card, i.e. client and server using VFs from the same 
ConnectX-4)
  --------------------------------------------------------------------------
  |                             |    Legacy RQ    |      Striding RQ       |
  --------------------------------------------------------------------------
  |str-writex30k (1 connection) |    24.62Gb/s    |       33.47Gb/s        |
  --------------------------------------------------------------------------
  Additionaly, two tests with transactional workload using the ethtool proposed 
switch: 
  --------------------------------------------------------------------------
  |                             |    Legacy RQ    |      Striding RQ       |
  --------------------------------------------------------------------------
  |  rr1c-200x30k---1           |     4.12Gb/s    |        5.66Gb/s        |
  --------------------------------------------------------------------------
  |  rr1c-200x30k--10           |    15.10Gb/s    |       20.77Gb/s        |
  --------------------------------------------------------------------------

  As concluded in the communication with Mellanox, there is a possibility to 
use a simple ethtool command to switch between the queuing methods, allowing us 
to avoid kernel code changes:
  ethtool --set-priv-flags DEVNAME rx_striding_rq on
  (To list the available settings you may use: ethtool --show-priv-flags 
DEVNAME)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-z-systems/+bug/1868113/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to