All of lore.kernel.org
 help / color / mirror / Atom feed
From: Saeed Mahameed <saeedm@mellanox.com>
To: "David S. Miller" <davem@davemloft.net>,
	Jason Gunthorpe <jgg@mellanox.com>,
	Doug Ledford <dledford@redhat.com>
Cc: Michael Chan <michael.chan@broadcom.com>,
	Andy Gospodarek <andy@greyhouse.net>,
	Tal Gilboa <talgi@mellanox.com>,
	"linux-rdma@vger.kernel.org" <linux-rdma@vger.kernel.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	Saeed Mahameed <saeedm@mellanox.com>
Subject: [pull request][for-next 0/9] Generic DIM lib for netdev and RDMA
Date: Wed, 5 Jun 2019 23:24:31 +0000	[thread overview]
Message-ID: <20190605232348.6452-1-saeedm@mellanox.com> (raw)

Hi Dave, Doug & Jason

This series improves DIM - Dynamically-tuned Interrupt
Moderation- to be generic for netdev and RDMA use-cases.

From Tal and Yamin:
The first 7 patches provide the necessary refactoring to current net_dim
library which affect some net drivers who are using the API.

The last 2 patches provide the RDMA implementation for DIM.

For more information please see tag log below.

Once we are all happy with the series, please pull to net-next and
rdma-next trees.

Thanks,
Saeed.

---
The following changes since commit cd6c84d8f0cdc911df435bb075ba22ce3c605b07:

  Linux 5.2-rc2 (2019-05-26 16:49:19 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux.git tags/dim-updates-2019-06-05

for you to fetch changes up to 1ec9974e75e7a58bff1ab17c4fcda17b180ed3bb:

  RDMA/core: Provide RDMA DIM support for ULPs (2019-06-05 16:09:02 -0700)

----------------------------------------------------------------
dim-updates-2019-06-05

From: Tal Gilboa

Implement net DIM over a generic DIM library

net_dim.h lib exposes an implementation of the DIM algorithm for
dynamically-tuned interrupt moderation for networking interfaces.

We want a similar functionality for other protocols, which might need to
optimize interrupts differently. Main motivation here is DIM for NVMf
storage protocol.

Current DIM implementation prioritizes reducing interrupt overhead over
latency. Also, in order to reduce DIM's own overhead, the algorithm might
take some time to identify it needs to change profiles. While this is
acceptable for networking, it might not work well on other scenarios.

Here I propose a new structure to DIM. The idea is to allow a slightly
modified functionality without the risk of breaking Net DIM behavior for
netdev. I verified there are no degradations in current DIM behavior with
the modified solution.

Solution:
- Common logic is declared in include/linux/dim.h and implemented in
  lib/dim/dim.c
- Net DIM (existing) logic is declared in include/linux/net_dim.h and
  implemented in lib/dim/net_dim.c, which uses the common logic from dim.h
- Any new DIM logic will be declared in "/include/linux/new_dim.h" and
   implemented in "lib/dim/new_dim.c".
- This new implementation will expose modified versions of profiles,
  dim_step() and dim_decision().

Pros for this solution are:
- Zero impact on existing net_dim implementation and usage
- Relatively more code reuse (compared to two separate solutions)
- Increased extensibility

----------------------------------------------------------------
Tal Gilboa (6):
      linux/dim: Move logic to dim.h
      linux/dim: Remove "net" prefix from internal DIM members
      linux/dim: Rename externally exposed macros
      linux/dim: Rename net_dim_sample() to net_dim_update_sample()
      linux/dim: Rename externally used net_dim members
      linux/dim: Move implementation to .c files

Yamin Friedman (3):
      linux/dim: Add completions count to dim_sample
      linux/dim: Implement rdma_dim
      RDMA/core: Provide RDMA DIM support for ULPs

 MAINTAINERS                                        |   3 +
 drivers/infiniband/core/cq.c                       |  78 ++++-
 drivers/net/ethernet/broadcom/Kconfig              |   1 +
 drivers/net/ethernet/broadcom/bcmsysport.c         |  20 +-
 drivers/net/ethernet/broadcom/bcmsysport.h         |   2 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt.c          |  12 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt.h          |   2 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt_debugfs.c  |   4 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt_dim.c      |   7 +-
 drivers/net/ethernet/broadcom/genet/bcmgenet.c     |  18 +-
 drivers/net/ethernet/broadcom/genet/bcmgenet.h     |   2 +-
 drivers/net/ethernet/mellanox/mlx4/Kconfig         |   1 +
 drivers/net/ethernet/mellanox/mlx5/core/Kconfig    |   2 +
 drivers/net/ethernet/mellanox/mlx5/core/en.h       |   8 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_dim.c   |  12 +-
 .../net/ethernet/mellanox/mlx5/core/en_ethtool.c   |   4 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c  |  22 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c  |  10 +-
 include/linux/dim.h                                | 271 +++++++++++++++
 include/linux/net_dim.h                            | 371 +++------------------
 include/linux/rdma_dim.h                           |  28 ++
 include/rdma/ib_verbs.h                            |  27 +-
 lib/Kconfig                                        |   8 +
 lib/Makefile                                       |   1 +
 lib/dim/Makefile                                   |  14 +
 lib/dim/dim.c                                      |  83 +++++
 lib/dim/net_dim.c                                  | 191 +++++++++++
 lib/dim/rdma_dim.c                                 | 162 +++++++++
 28 files changed, 968 insertions(+), 396 deletions(-)
 create mode 100644 include/linux/dim.h
 create mode 100644 include/linux/rdma_dim.h
 create mode 100644 lib/dim/Makefile
 create mode 100644 lib/dim/dim.c
 create mode 100644 lib/dim/net_dim.c
 create mode 100644 lib/dim/rdma_dim.c

             reply	other threads:[~2019-06-05 23:24 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-05 23:24 Saeed Mahameed [this message]
2019-06-05 23:24 ` [for-next 1/9] linux/dim: Move logic to dim.h Saeed Mahameed
2019-06-05 23:24 ` [for-next 2/9] linux/dim: Remove "net" prefix from internal DIM members Saeed Mahameed
2019-06-05 23:24 ` [for-next 3/9] linux/dim: Rename externally exposed macros Saeed Mahameed
2019-06-05 23:24 ` [for-next 4/9] linux/dim: Rename net_dim_sample() to net_dim_update_sample() Saeed Mahameed
2019-06-05 23:24 ` [for-next 5/9] linux/dim: Rename externally used net_dim members Saeed Mahameed
2019-06-05 23:24 ` [for-next 6/9] linux/dim: Move implementation to .c files Saeed Mahameed
2019-06-05 23:24 ` [for-next 7/9] linux/dim: Add completions count to dim_sample Saeed Mahameed
2019-06-05 23:24 ` [for-next 8/9] linux/dim: Implement rdma_dim Saeed Mahameed
2019-06-05 23:24 ` [for-next 9/9] RDMA/core: Provide RDMA DIM support for ULPs Saeed Mahameed
2019-06-06  7:14 ` [pull request][for-next 0/9] Generic DIM lib for netdev and RDMA Leon Romanovsky
2019-06-06  7:19   ` Max Gurtovoy
2019-06-06  7:53     ` Leon Romanovsky
2019-06-06 13:07     ` Jason Gunthorpe
2019-06-07 18:14       ` Saeed Mahameed
2019-06-07 18:57         ` Jason Gunthorpe

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=20190605232348.6452-1-saeedm@mellanox.com \
    --to=saeedm@mellanox.com \
    --cc=andy@greyhouse.net \
    --cc=davem@davemloft.net \
    --cc=dledford@redhat.com \
    --cc=jgg@mellanox.com \
    --cc=linux-rdma@vger.kernel.org \
    --cc=michael.chan@broadcom.com \
    --cc=netdev@vger.kernel.org \
    --cc=talgi@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 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.