* [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS
@ 2024-09-18 8:35 Håkon Bugge
2024-09-18 8:35 ` [MAINLINE 1/2] RDMA/core: Enable legacy ULPs to use RDMA DIM Håkon Bugge
` (2 more replies)
0 siblings, 3 replies; 23+ messages in thread
From: Håkon Bugge @ 2024-09-18 8:35 UTC (permalink / raw)
To: Jason Gunthorpe, Leon Romanovsky, Allison Henderson,
David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
Cc: linux-rdma, linux-kernel, netdev, rds-devel
The Dynamic Interrupt Moderation mechanism can only be used by ULPs
using ib_alloc_cq() and family. We extend DIM to also cover legacy
ULPs using ib_create_cq(). The last commit takes advantage of this end
uses DIM in RDS.
Håkon Bugge (2):
RDMA/core: Enable legacy ULPs to use RDMA DIM
rds: ib: Add Dynamic Interrupt Moderation to CQs
drivers/infiniband/core/cq.c | 7 +++++--
drivers/infiniband/core/cq.h | 16 ++++++++++++++++
drivers/infiniband/core/verbs.c | 6 ++++++
net/rds/ib_cm.c | 10 ++++++++++
4 files changed, 37 insertions(+), 2 deletions(-)
create mode 100644 drivers/infiniband/core/cq.h
--
2.43.5
^ permalink raw reply [flat|nested] 23+ messages in thread* [MAINLINE 1/2] RDMA/core: Enable legacy ULPs to use RDMA DIM 2024-09-18 8:35 [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS Håkon Bugge @ 2024-09-18 8:35 ` Håkon Bugge 2024-09-18 8:35 ` [MAINLINE 2/2] rds: ib: Add Dynamic Interrupt Moderation to CQs Håkon Bugge 2024-09-19 14:17 ` [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS Christoph Hellwig 2 siblings, 0 replies; 23+ messages in thread From: Håkon Bugge @ 2024-09-18 8:35 UTC (permalink / raw) To: Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni Cc: linux-rdma, linux-kernel, netdev, rds-devel The RDMA DIM mechanism is not available for legacy ULPs using ib_create_cq(). Hence, enable it in ib_create_cq_user() if IB_CQ_MODERATE is set in cq_attr.flags. This way, legacy ULPs can take advantage of RDMA DIM. Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com> --- drivers/infiniband/core/cq.c | 7 +++++-- drivers/infiniband/core/cq.h | 16 ++++++++++++++++ drivers/infiniband/core/verbs.c | 6 ++++++ 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 drivers/infiniband/core/cq.h diff --git a/drivers/infiniband/core/cq.c b/drivers/infiniband/core/cq.c index a70876a0a2312..8e582eca6987f 100644 --- a/drivers/infiniband/core/cq.c +++ b/drivers/infiniband/core/cq.c @@ -7,6 +7,7 @@ #include <rdma/ib_verbs.h> #include "core_priv.h" +#include "cq.h" #include <trace/events/rdma_core.h> /* Max size for shared CQ, may require tuning */ @@ -50,7 +51,7 @@ static void ib_cq_rdma_dim_work(struct work_struct *w) cq->device->ops.modify_cq(cq, comps, usec); } -static void rdma_dim_init(struct ib_cq *cq) +void rdma_dim_init(struct ib_cq *cq) { struct dim *dim; @@ -70,8 +71,9 @@ static void rdma_dim_init(struct ib_cq *cq) INIT_WORK(&dim->work, ib_cq_rdma_dim_work); } +EXPORT_SYMBOL(rdma_dim_init); -static void rdma_dim_destroy(struct ib_cq *cq) +void rdma_dim_destroy(struct ib_cq *cq) { if (!cq->dim) return; @@ -79,6 +81,7 @@ static void rdma_dim_destroy(struct ib_cq *cq) cancel_work_sync(&cq->dim->work); kfree(cq->dim); } +EXPORT_SYMBOL(rdma_dim_destroy); static int __poll_cq(struct ib_cq *cq, int num_entries, struct ib_wc *wc) { diff --git a/drivers/infiniband/core/cq.h b/drivers/infiniband/core/cq.h new file mode 100644 index 0000000000000..c55f7d3f1cbf4 --- /dev/null +++ b/drivers/infiniband/core/cq.h @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Let other files use rdma_dim_{init,destroy} + * + * Author: Håkon Bugge <haakon.bugge@oracle.com> + * + * Copyright (c) 2024 Oracle and/or its affiliates. + */ + +#ifndef CQ_H +#define CQ_H + +void rdma_dim_init(struct ib_cq *cq); +void rdma_dim_destroy(struct ib_cq *cq); + +#endif diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c index 473ee0831307c..60a64ea77ae25 100644 --- a/drivers/infiniband/core/verbs.c +++ b/drivers/infiniband/core/verbs.c @@ -53,6 +53,7 @@ #include <rdma/lag.h> #include "core_priv.h" +#include "cq.h" #include <trace/events/rdma_core.h> static int ib_resolve_eth_dmac(struct ib_device *device, @@ -2161,6 +2162,9 @@ struct ib_cq *__ib_create_cq(struct ib_device *device, return ERR_PTR(ret); } + if (cq_attr->flags & IB_CQ_MODERATE) + rdma_dim_init(cq); + rdma_restrack_add(&cq->res); return cq; } @@ -2187,6 +2191,8 @@ int ib_destroy_cq_user(struct ib_cq *cq, struct ib_udata *udata) if (atomic_read(&cq->usecnt)) return -EBUSY; + rdma_dim_destroy(cq); + ret = cq->device->ops.destroy_cq(cq, udata); if (ret) return ret; -- 2.43.5 ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [MAINLINE 2/2] rds: ib: Add Dynamic Interrupt Moderation to CQs 2024-09-18 8:35 [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS Håkon Bugge 2024-09-18 8:35 ` [MAINLINE 1/2] RDMA/core: Enable legacy ULPs to use RDMA DIM Håkon Bugge @ 2024-09-18 8:35 ` Håkon Bugge 2024-09-20 7:47 ` Zhu Yanjun 2024-09-21 13:43 ` Zhu Yanjun 2024-09-19 14:17 ` [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS Christoph Hellwig 2 siblings, 2 replies; 23+ messages in thread From: Håkon Bugge @ 2024-09-18 8:35 UTC (permalink / raw) To: Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni Cc: linux-rdma, linux-kernel, netdev, rds-devel With the support from ib_core to use Dynamic Interrupt Moderation (DIM) from legacy ULPs, which uses ib_create_cq(), we enable that feature for the receive and send CQs in RDS. A set of rds-stress runs have been done. bcopy read + write for payload 8448 and 16640 bytes and ack/req of 256 bytes. Number of QPs varies from 8 to 128, number of threads (i.e. rds-stress processes) from one to 16 and a depth of four. A limit has been applied such that the number of processes times the number of QPs never exceeds 128. All in all, 61 rds-stress runs. For brevity, only the rows showing a +/- 3% deviation or larger from base is listed. The geometric mean of the ratios (IOPS_test / IOPS_base) is calculated for all 61 runs, and that gives the best possible "average" impact of the commits. In the following, "base" is v6.11-rc7. "test" is the same kernel with the following two commits: * rds: ib: Add Dynamic Interrupt Moderation to CQs (this commit) * RDMA/core: Enable legacy ULPs to use RDMA DIM This is executed between two X8-2 with CX-5 using fw 16.35.3502. These BM systems were instantiated with one VF, which were used for the test: base test ACK REQ QPS THR DEP IOPS IOPS Percent 256 8448 8 1 4 634463 658162 3.7 256 8448 8 2 4 862648 997358 15.6 256 8448 8 4 4 950458 1113991 17.2 256 8448 8 8 4 932120 1127024 20.9 256 8448 8 16 4 944977 1133885 20.0 8448 256 8 2 4 858663 975563 13.6 8448 256 8 4 4 934884 1098854 17.5 8448 256 8 8 4 928247 1116015 20.2 8448 256 8 16 4 938864 1123455 19.7 256 8448 64 1 4 965985 918445 -4.9 8448 256 64 1 4 963280 918239 -4.7 256 16640 8 2 4 544670 582330 6.9 256 16640 8 4 4 554873 597553 7.7 256 16640 8 8 4 551799 597479 8.3 256 16640 8 16 4 553041 597898 8.1 16640 256 8 2 4 544644 578331 6.2 16640 256 8 4 4 553944 594627 7.3 16640 256 8 8 4 551388 594737 7.9 16640 256 8 16 4 552986 596581 7.9 Geometric mean of ratios: 1.03 Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com> --- net/rds/ib_cm.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/net/rds/ib_cm.c b/net/rds/ib_cm.c index 26b069e1999df..79603d86b6c02 100644 --- a/net/rds/ib_cm.c +++ b/net/rds/ib_cm.c @@ -259,6 +259,7 @@ static void rds_ib_cq_comp_handler_recv(struct ib_cq *cq, void *context) static void poll_scq(struct rds_ib_connection *ic, struct ib_cq *cq, struct ib_wc *wcs) { + int ncompleted = 0; int nr, i; struct ib_wc *wc; @@ -276,7 +277,10 @@ static void poll_scq(struct rds_ib_connection *ic, struct ib_cq *cq, rds_ib_mr_cqe_handler(ic, wc); } + ncompleted += nr; } + if (cq->dim) + rdma_dim(cq->dim, ncompleted); } static void rds_ib_tasklet_fn_send(unsigned long data) @@ -304,6 +308,7 @@ static void poll_rcq(struct rds_ib_connection *ic, struct ib_cq *cq, struct ib_wc *wcs, struct rds_ib_ack_state *ack_state) { + int ncompleted = 0; int nr, i; struct ib_wc *wc; @@ -316,7 +321,10 @@ static void poll_rcq(struct rds_ib_connection *ic, struct ib_cq *cq, rds_ib_recv_cqe_handler(ic, wc, ack_state); } + ncompleted += nr; } + if (cq->dim) + rdma_dim(cq->dim, ncompleted); } static void rds_ib_tasklet_fn_recv(unsigned long data) @@ -542,6 +550,7 @@ static int rds_ib_setup_qp(struct rds_connection *conn) ic->i_scq_vector = ibdev_get_unused_vector(rds_ibdev); cq_attr.cqe = ic->i_send_ring.w_nr + fr_queue_space + 1; cq_attr.comp_vector = ic->i_scq_vector; + cq_attr.flags |= IB_CQ_MODERATE; ic->i_send_cq = ib_create_cq(dev, rds_ib_cq_comp_handler_send, rds_ib_cq_event_handler, conn, &cq_attr); @@ -556,6 +565,7 @@ static int rds_ib_setup_qp(struct rds_connection *conn) ic->i_rcq_vector = ibdev_get_unused_vector(rds_ibdev); cq_attr.cqe = ic->i_recv_ring.w_nr; cq_attr.comp_vector = ic->i_rcq_vector; + cq_attr.flags |= IB_CQ_MODERATE; ic->i_recv_cq = ib_create_cq(dev, rds_ib_cq_comp_handler_recv, rds_ib_cq_event_handler, conn, &cq_attr); -- 2.43.5 ^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [MAINLINE 2/2] rds: ib: Add Dynamic Interrupt Moderation to CQs 2024-09-18 8:35 ` [MAINLINE 2/2] rds: ib: Add Dynamic Interrupt Moderation to CQs Håkon Bugge @ 2024-09-20 7:47 ` Zhu Yanjun 2024-09-20 9:42 ` Haakon Bugge 2024-09-21 13:43 ` Zhu Yanjun 1 sibling, 1 reply; 23+ messages in thread From: Zhu Yanjun @ 2024-09-20 7:47 UTC (permalink / raw) To: Håkon Bugge, Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni Cc: linux-rdma, linux-kernel, netdev, rds-devel 在 2024/9/18 16:35, Håkon Bugge 写道: > With the support from ib_core to use Dynamic Interrupt Moderation > (DIM) from legacy ULPs, which uses ib_create_cq(), we enable that > feature for the receive and send CQs in RDS. Hi, Haakon I am interested in this patch series. I just wonder if the performance of rds is increased after DIM is used in legacy ULPs? That is, is there any benefit to legacy ULPs after DIM is used? Do you have any test results about this DIM? Thanks, Zhu Yanjun > > A set of rds-stress runs have been done. bcopy read + write for > payload 8448 and 16640 bytes and ack/req of 256 bytes. Number of QPs > varies from 8 to 128, number of threads (i.e. rds-stress processes) > from one to 16 and a depth of four. A limit has been applied such that > the number of processes times the number of QPs never exceeds 128. All > in all, 61 rds-stress runs. > > For brevity, only the rows showing a +/- 3% deviation or larger from > base is listed. The geometric mean of the ratios (IOPS_test / > IOPS_base) is calculated for all 61 runs, and that gives the best > possible "average" impact of the commits. > > In the following, "base" is v6.11-rc7. "test" is the same > kernel with the following two commits: > > * rds: ib: Add Dynamic Interrupt Moderation to CQs (this commit) > * RDMA/core: Enable legacy ULPs to use RDMA DIM > > This is executed between two X8-2 with CX-5 using fw 16.35.3502. These > BM systems were instantiated with one VF, which were used for the > test: > > base test > ACK REQ QPS THR DEP IOPS IOPS Percent > 256 8448 8 1 4 634463 658162 3.7 > 256 8448 8 2 4 862648 997358 15.6 > 256 8448 8 4 4 950458 1113991 17.2 > 256 8448 8 8 4 932120 1127024 20.9 > 256 8448 8 16 4 944977 1133885 20.0 > 8448 256 8 2 4 858663 975563 13.6 > 8448 256 8 4 4 934884 1098854 17.5 > 8448 256 8 8 4 928247 1116015 20.2 > 8448 256 8 16 4 938864 1123455 19.7 > 256 8448 64 1 4 965985 918445 -4.9 > 8448 256 64 1 4 963280 918239 -4.7 > 256 16640 8 2 4 544670 582330 6.9 > 256 16640 8 4 4 554873 597553 7.7 > 256 16640 8 8 4 551799 597479 8.3 > 256 16640 8 16 4 553041 597898 8.1 > 16640 256 8 2 4 544644 578331 6.2 > 16640 256 8 4 4 553944 594627 7.3 > 16640 256 8 8 4 551388 594737 7.9 > 16640 256 8 16 4 552986 596581 7.9 > Geometric mean of ratios: 1.03 > > Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com> > --- > net/rds/ib_cm.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/net/rds/ib_cm.c b/net/rds/ib_cm.c > index 26b069e1999df..79603d86b6c02 100644 > --- a/net/rds/ib_cm.c > +++ b/net/rds/ib_cm.c > @@ -259,6 +259,7 @@ static void rds_ib_cq_comp_handler_recv(struct ib_cq *cq, void *context) > static void poll_scq(struct rds_ib_connection *ic, struct ib_cq *cq, > struct ib_wc *wcs) > { > + int ncompleted = 0; > int nr, i; > struct ib_wc *wc; > > @@ -276,7 +277,10 @@ static void poll_scq(struct rds_ib_connection *ic, struct ib_cq *cq, > rds_ib_mr_cqe_handler(ic, wc); > > } > + ncompleted += nr; > } > + if (cq->dim) > + rdma_dim(cq->dim, ncompleted); > } > > static void rds_ib_tasklet_fn_send(unsigned long data) > @@ -304,6 +308,7 @@ static void poll_rcq(struct rds_ib_connection *ic, struct ib_cq *cq, > struct ib_wc *wcs, > struct rds_ib_ack_state *ack_state) > { > + int ncompleted = 0; > int nr, i; > struct ib_wc *wc; > > @@ -316,7 +321,10 @@ static void poll_rcq(struct rds_ib_connection *ic, struct ib_cq *cq, > > rds_ib_recv_cqe_handler(ic, wc, ack_state); > } > + ncompleted += nr; > } > + if (cq->dim) > + rdma_dim(cq->dim, ncompleted); > } > > static void rds_ib_tasklet_fn_recv(unsigned long data) > @@ -542,6 +550,7 @@ static int rds_ib_setup_qp(struct rds_connection *conn) > ic->i_scq_vector = ibdev_get_unused_vector(rds_ibdev); > cq_attr.cqe = ic->i_send_ring.w_nr + fr_queue_space + 1; > cq_attr.comp_vector = ic->i_scq_vector; > + cq_attr.flags |= IB_CQ_MODERATE; > ic->i_send_cq = ib_create_cq(dev, rds_ib_cq_comp_handler_send, > rds_ib_cq_event_handler, conn, > &cq_attr); > @@ -556,6 +565,7 @@ static int rds_ib_setup_qp(struct rds_connection *conn) > ic->i_rcq_vector = ibdev_get_unused_vector(rds_ibdev); > cq_attr.cqe = ic->i_recv_ring.w_nr; > cq_attr.comp_vector = ic->i_rcq_vector; > + cq_attr.flags |= IB_CQ_MODERATE; > ic->i_recv_cq = ib_create_cq(dev, rds_ib_cq_comp_handler_recv, > rds_ib_cq_event_handler, conn, > &cq_attr); ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 2/2] rds: ib: Add Dynamic Interrupt Moderation to CQs 2024-09-20 7:47 ` Zhu Yanjun @ 2024-09-20 9:42 ` Haakon Bugge 2024-09-20 12:51 ` Zhu Yanjun 0 siblings, 1 reply; 23+ messages in thread From: Haakon Bugge @ 2024-09-20 9:42 UTC (permalink / raw) To: Zhu Yanjun Cc: Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, OFED mailing list, open list, netdev, rds-devel@oss.oracle.com > On 20 Sep 2024, at 09:47, Zhu Yanjun <yanjun.zhu@linux.dev> wrote: > > 在 2024/9/18 16:35, Håkon Bugge 写道: >> With the support from ib_core to use Dynamic Interrupt Moderation >> (DIM) from legacy ULPs, which uses ib_create_cq(), we enable that >> feature for the receive and send CQs in RDS. > > Hi, Haakon > > I am interested in this patch series. I just wonder if the performance of rds is increased after DIM is used in legacy ULPs? > That is, is there any benefit to legacy ULPs after DIM is used? > > Do you have any test results about this DIM? Yes, please see the cover letter of this commit. Thxs, Håkon > > Thanks, > Zhu Yanjun > >> A set of rds-stress runs have been done. bcopy read + write for >> payload 8448 and 16640 bytes and ack/req of 256 bytes. Number of QPs >> varies from 8 to 128, number of threads (i.e. rds-stress processes) >> from one to 16 and a depth of four. A limit has been applied such that >> the number of processes times the number of QPs never exceeds 128. All >> in all, 61 rds-stress runs. >> For brevity, only the rows showing a +/- 3% deviation or larger from >> base is listed. The geometric mean of the ratios (IOPS_test / >> IOPS_base) is calculated for all 61 runs, and that gives the best >> possible "average" impact of the commits. >> In the following, "base" is v6.11-rc7. "test" is the same >> kernel with the following two commits: >> * rds: ib: Add Dynamic Interrupt Moderation to CQs (this commit) >> * RDMA/core: Enable legacy ULPs to use RDMA DIM >> This is executed between two X8-2 with CX-5 using fw 16.35.3502. These >> BM systems were instantiated with one VF, which were used for the >> test: >> base test >> ACK REQ QPS THR DEP IOPS IOPS Percent >> 256 8448 8 1 4 634463 658162 3.7 >> 256 8448 8 2 4 862648 997358 15.6 >> 256 8448 8 4 4 950458 1113991 17.2 >> 256 8448 8 8 4 932120 1127024 20.9 >> 256 8448 8 16 4 944977 1133885 20.0 >> 8448 256 8 2 4 858663 975563 13.6 >> 8448 256 8 4 4 934884 1098854 17.5 >> 8448 256 8 8 4 928247 1116015 20.2 >> 8448 256 8 16 4 938864 1123455 19.7 >> 256 8448 64 1 4 965985 918445 -4.9 >> 8448 256 64 1 4 963280 918239 -4.7 >> 256 16640 8 2 4 544670 582330 6.9 >> 256 16640 8 4 4 554873 597553 7.7 >> 256 16640 8 8 4 551799 597479 8.3 >> 256 16640 8 16 4 553041 597898 8.1 >> 16640 256 8 2 4 544644 578331 6.2 >> 16640 256 8 4 4 553944 594627 7.3 >> 16640 256 8 8 4 551388 594737 7.9 >> 16640 256 8 16 4 552986 596581 7.9 >> Geometric mean of ratios: 1.03 >> Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com> >> --- >> net/rds/ib_cm.c | 10 ++++++++++ >> 1 file changed, 10 insertions(+) >> diff --git a/net/rds/ib_cm.c b/net/rds/ib_cm.c >> index 26b069e1999df..79603d86b6c02 100644 >> --- a/net/rds/ib_cm.c >> +++ b/net/rds/ib_cm.c >> @@ -259,6 +259,7 @@ static void rds_ib_cq_comp_handler_recv(struct ib_cq *cq, void *context) >> static void poll_scq(struct rds_ib_connection *ic, struct ib_cq *cq, >> struct ib_wc *wcs) >> { >> + int ncompleted = 0; >> int nr, i; >> struct ib_wc *wc; >> @@ -276,7 +277,10 @@ static void poll_scq(struct rds_ib_connection *ic, struct ib_cq *cq, >> rds_ib_mr_cqe_handler(ic, wc); >> } >> + ncompleted += nr; >> } >> + if (cq->dim) >> + rdma_dim(cq->dim, ncompleted); >> } >> static void rds_ib_tasklet_fn_send(unsigned long data) >> @@ -304,6 +308,7 @@ static void poll_rcq(struct rds_ib_connection *ic, struct ib_cq *cq, >> struct ib_wc *wcs, >> struct rds_ib_ack_state *ack_state) >> { >> + int ncompleted = 0; >> int nr, i; >> struct ib_wc *wc; >> @@ -316,7 +321,10 @@ static void poll_rcq(struct rds_ib_connection *ic, struct ib_cq *cq, >> rds_ib_recv_cqe_handler(ic, wc, ack_state); >> } >> + ncompleted += nr; >> } >> + if (cq->dim) >> + rdma_dim(cq->dim, ncompleted); >> } >> static void rds_ib_tasklet_fn_recv(unsigned long data) >> @@ -542,6 +550,7 @@ static int rds_ib_setup_qp(struct rds_connection *conn) >> ic->i_scq_vector = ibdev_get_unused_vector(rds_ibdev); >> cq_attr.cqe = ic->i_send_ring.w_nr + fr_queue_space + 1; >> cq_attr.comp_vector = ic->i_scq_vector; >> + cq_attr.flags |= IB_CQ_MODERATE; >> ic->i_send_cq = ib_create_cq(dev, rds_ib_cq_comp_handler_send, >> rds_ib_cq_event_handler, conn, >> &cq_attr); >> @@ -556,6 +565,7 @@ static int rds_ib_setup_qp(struct rds_connection *conn) >> ic->i_rcq_vector = ibdev_get_unused_vector(rds_ibdev); >> cq_attr.cqe = ic->i_recv_ring.w_nr; >> cq_attr.comp_vector = ic->i_rcq_vector; >> + cq_attr.flags |= IB_CQ_MODERATE; >> ic->i_recv_cq = ib_create_cq(dev, rds_ib_cq_comp_handler_recv, >> rds_ib_cq_event_handler, conn, >> &cq_attr); > ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 2/2] rds: ib: Add Dynamic Interrupt Moderation to CQs 2024-09-20 9:42 ` Haakon Bugge @ 2024-09-20 12:51 ` Zhu Yanjun 0 siblings, 0 replies; 23+ messages in thread From: Zhu Yanjun @ 2024-09-20 12:51 UTC (permalink / raw) To: Haakon Bugge Cc: Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, OFED mailing list, open list, netdev, rds-devel@oss.oracle.com 在 2024/9/20 17:42, Haakon Bugge 写道: > > >> On 20 Sep 2024, at 09:47, Zhu Yanjun <yanjun.zhu@linux.dev> wrote: >> >> 在 2024/9/18 16:35, Håkon Bugge 写道: >>> With the support from ib_core to use Dynamic Interrupt Moderation >>> (DIM) from legacy ULPs, which uses ib_create_cq(), we enable that >>> feature for the receive and send CQs in RDS. >> >> Hi, Haakon >> >> I am interested in this patch series. I just wonder if the performance of rds is increased after DIM is used in legacy ULPs? >> That is, is there any benefit to legacy ULPs after DIM is used? >> >> Do you have any test results about this DIM? > > Yes, please see the cover letter of this commit. Which Oracle Linux distro includes this feature? And what is the kernel version? Zhu Yanjun > > > Thxs, Håkon > >> >> Thanks, >> Zhu Yanjun >> >>> A set of rds-stress runs have been done. bcopy read + write for >>> payload 8448 and 16640 bytes and ack/req of 256 bytes. Number of QPs >>> varies from 8 to 128, number of threads (i.e. rds-stress processes) >>> from one to 16 and a depth of four. A limit has been applied such that >>> the number of processes times the number of QPs never exceeds 128. All >>> in all, 61 rds-stress runs. >>> For brevity, only the rows showing a +/- 3% deviation or larger from >>> base is listed. The geometric mean of the ratios (IOPS_test / >>> IOPS_base) is calculated for all 61 runs, and that gives the best >>> possible "average" impact of the commits. >>> In the following, "base" is v6.11-rc7. "test" is the same >>> kernel with the following two commits: >>> * rds: ib: Add Dynamic Interrupt Moderation to CQs (this commit) >>> * RDMA/core: Enable legacy ULPs to use RDMA DIM >>> This is executed between two X8-2 with CX-5 using fw 16.35.3502. These >>> BM systems were instantiated with one VF, which were used for the >>> test: >>> base test >>> ACK REQ QPS THR DEP IOPS IOPS Percent >>> 256 8448 8 1 4 634463 658162 3.7 >>> 256 8448 8 2 4 862648 997358 15.6 >>> 256 8448 8 4 4 950458 1113991 17.2 >>> 256 8448 8 8 4 932120 1127024 20.9 >>> 256 8448 8 16 4 944977 1133885 20.0 >>> 8448 256 8 2 4 858663 975563 13.6 >>> 8448 256 8 4 4 934884 1098854 17.5 >>> 8448 256 8 8 4 928247 1116015 20.2 >>> 8448 256 8 16 4 938864 1123455 19.7 >>> 256 8448 64 1 4 965985 918445 -4.9 >>> 8448 256 64 1 4 963280 918239 -4.7 >>> 256 16640 8 2 4 544670 582330 6.9 >>> 256 16640 8 4 4 554873 597553 7.7 >>> 256 16640 8 8 4 551799 597479 8.3 >>> 256 16640 8 16 4 553041 597898 8.1 >>> 16640 256 8 2 4 544644 578331 6.2 >>> 16640 256 8 4 4 553944 594627 7.3 >>> 16640 256 8 8 4 551388 594737 7.9 >>> 16640 256 8 16 4 552986 596581 7.9 >>> Geometric mean of ratios: 1.03 >>> Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com> >>> --- >>> net/rds/ib_cm.c | 10 ++++++++++ >>> 1 file changed, 10 insertions(+) >>> diff --git a/net/rds/ib_cm.c b/net/rds/ib_cm.c >>> index 26b069e1999df..79603d86b6c02 100644 >>> --- a/net/rds/ib_cm.c >>> +++ b/net/rds/ib_cm.c >>> @@ -259,6 +259,7 @@ static void rds_ib_cq_comp_handler_recv(struct ib_cq *cq, void *context) >>> static void poll_scq(struct rds_ib_connection *ic, struct ib_cq *cq, >>> struct ib_wc *wcs) >>> { >>> + int ncompleted = 0; >>> int nr, i; >>> struct ib_wc *wc; >>> @@ -276,7 +277,10 @@ static void poll_scq(struct rds_ib_connection *ic, struct ib_cq *cq, >>> rds_ib_mr_cqe_handler(ic, wc); >>> } >>> + ncompleted += nr; >>> } >>> + if (cq->dim) >>> + rdma_dim(cq->dim, ncompleted); >>> } >>> static void rds_ib_tasklet_fn_send(unsigned long data) >>> @@ -304,6 +308,7 @@ static void poll_rcq(struct rds_ib_connection *ic, struct ib_cq *cq, >>> struct ib_wc *wcs, >>> struct rds_ib_ack_state *ack_state) >>> { >>> + int ncompleted = 0; >>> int nr, i; >>> struct ib_wc *wc; >>> @@ -316,7 +321,10 @@ static void poll_rcq(struct rds_ib_connection *ic, struct ib_cq *cq, >>> rds_ib_recv_cqe_handler(ic, wc, ack_state); >>> } >>> + ncompleted += nr; >>> } >>> + if (cq->dim) >>> + rdma_dim(cq->dim, ncompleted); >>> } >>> static void rds_ib_tasklet_fn_recv(unsigned long data) >>> @@ -542,6 +550,7 @@ static int rds_ib_setup_qp(struct rds_connection *conn) >>> ic->i_scq_vector = ibdev_get_unused_vector(rds_ibdev); >>> cq_attr.cqe = ic->i_send_ring.w_nr + fr_queue_space + 1; >>> cq_attr.comp_vector = ic->i_scq_vector; >>> + cq_attr.flags |= IB_CQ_MODERATE; >>> ic->i_send_cq = ib_create_cq(dev, rds_ib_cq_comp_handler_send, >>> rds_ib_cq_event_handler, conn, >>> &cq_attr); >>> @@ -556,6 +565,7 @@ static int rds_ib_setup_qp(struct rds_connection *conn) >>> ic->i_rcq_vector = ibdev_get_unused_vector(rds_ibdev); >>> cq_attr.cqe = ic->i_recv_ring.w_nr; >>> cq_attr.comp_vector = ic->i_rcq_vector; >>> + cq_attr.flags |= IB_CQ_MODERATE; >>> ic->i_recv_cq = ib_create_cq(dev, rds_ib_cq_comp_handler_recv, >>> rds_ib_cq_event_handler, conn, >>> &cq_attr); >> > ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 2/2] rds: ib: Add Dynamic Interrupt Moderation to CQs 2024-09-18 8:35 ` [MAINLINE 2/2] rds: ib: Add Dynamic Interrupt Moderation to CQs Håkon Bugge 2024-09-20 7:47 ` Zhu Yanjun @ 2024-09-21 13:43 ` Zhu Yanjun 1 sibling, 0 replies; 23+ messages in thread From: Zhu Yanjun @ 2024-09-21 13:43 UTC (permalink / raw) To: Håkon Bugge, Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni Cc: linux-rdma, linux-kernel, netdev, rds-devel 在 2024/9/18 16:35, Håkon Bugge 写道: > With the support from ib_core to use Dynamic Interrupt Moderation > (DIM) from legacy ULPs, which uses ib_create_cq(), we enable that > feature for the receive and send CQs in RDS. > > A set of rds-stress runs have been done. bcopy read + write for > payload 8448 and 16640 bytes and ack/req of 256 bytes. Number of QPs > varies from 8 to 128, number of threads (i.e. rds-stress processes) > from one to 16 and a depth of four. A limit has been applied such that > the number of processes times the number of QPs never exceeds 128. All > in all, 61 rds-stress runs. > > For brevity, only the rows showing a +/- 3% deviation or larger from > base is listed. The geometric mean of the ratios (IOPS_test / > IOPS_base) is calculated for all 61 runs, and that gives the best > possible "average" impact of the commits. > > In the following, "base" is v6.11-rc7. "test" is the same > kernel with the following two commits: > > * rds: ib: Add Dynamic Interrupt Moderation to CQs (this commit) > * RDMA/core: Enable legacy ULPs to use RDMA DIM > > This is executed between two X8-2 with CX-5 using fw 16.35.3502. These > BM systems were instantiated with one VF, which were used for the > test: > > base test > ACK REQ QPS THR DEP IOPS IOPS Percent > 256 8448 8 1 4 634463 658162 3.7 > 256 8448 8 2 4 862648 997358 15.6 > 256 8448 8 4 4 950458 1113991 17.2 > 256 8448 8 8 4 932120 1127024 20.9 > 256 8448 8 16 4 944977 1133885 20.0 > 8448 256 8 2 4 858663 975563 13.6 > 8448 256 8 4 4 934884 1098854 17.5 > 8448 256 8 8 4 928247 1116015 20.2 > 8448 256 8 16 4 938864 1123455 19.7 > 256 8448 64 1 4 965985 918445 -4.9 > 8448 256 64 1 4 963280 918239 -4.7 > 256 16640 8 2 4 544670 582330 6.9 > 256 16640 8 4 4 554873 597553 7.7 > 256 16640 8 8 4 551799 597479 8.3 > 256 16640 8 16 4 553041 597898 8.1 > 16640 256 8 2 4 544644 578331 6.2 > 16640 256 8 4 4 553944 594627 7.3 > 16640 256 8 8 4 551388 594737 7.9 > 16640 256 8 16 4 552986 596581 7.9 > Geometric mean of ratios: 1.03 > > Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com> > --- > net/rds/ib_cm.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/net/rds/ib_cm.c b/net/rds/ib_cm.c > index 26b069e1999df..79603d86b6c02 100644 > --- a/net/rds/ib_cm.c > +++ b/net/rds/ib_cm.c > @@ -259,6 +259,7 @@ static void rds_ib_cq_comp_handler_recv(struct ib_cq *cq, void *context) > static void poll_scq(struct rds_ib_connection *ic, struct ib_cq *cq, > struct ib_wc *wcs) > { > + int ncompleted = 0; > int nr, i; > struct ib_wc *wc; > > @@ -276,7 +277,10 @@ static void poll_scq(struct rds_ib_connection *ic, struct ib_cq *cq, > rds_ib_mr_cqe_handler(ic, wc); > > } > + ncompleted += nr; > } > + if (cq->dim) > + rdma_dim(cq->dim, ncompleted); > } > > static void rds_ib_tasklet_fn_send(unsigned long data) > @@ -304,6 +308,7 @@ static void poll_rcq(struct rds_ib_connection *ic, struct ib_cq *cq, > struct ib_wc *wcs, > struct rds_ib_ack_state *ack_state) > { > + int ncompleted = 0; > int nr, i; > struct ib_wc *wc; > > @@ -316,7 +321,10 @@ static void poll_rcq(struct rds_ib_connection *ic, struct ib_cq *cq, > > rds_ib_recv_cqe_handler(ic, wc, ack_state); > } > + ncompleted += nr; > } > + if (cq->dim) > + rdma_dim(cq->dim, ncompleted); > } > > static void rds_ib_tasklet_fn_recv(unsigned long data) > @@ -542,6 +550,7 @@ static int rds_ib_setup_qp(struct rds_connection *conn) > ic->i_scq_vector = ibdev_get_unused_vector(rds_ibdev); > cq_attr.cqe = ic->i_send_ring.w_nr + fr_queue_space + 1; > cq_attr.comp_vector = ic->i_scq_vector; > + cq_attr.flags |= IB_CQ_MODERATE; cq_attr.flags is added IB_CQ_MODERATE here. > ic->i_send_cq = ib_create_cq(dev, rds_ib_cq_comp_handler_send, > rds_ib_cq_event_handler, conn, > &cq_attr); > @@ -556,6 +565,7 @@ static int rds_ib_setup_qp(struct rds_connection *conn) > ic->i_rcq_vector = ibdev_get_unused_vector(rds_ibdev); > cq_attr.cqe = ic->i_recv_ring.w_nr; > cq_attr.comp_vector = ic->i_rcq_vector; > + cq_attr.flags |= IB_CQ_MODERATE; Why is cq_attr.flags add IB_CQ_MODERATE again? Is this cq_attr.flags changed before this line? Zhu Yanjun > ic->i_recv_cq = ib_create_cq(dev, rds_ib_cq_comp_handler_recv, > rds_ib_cq_event_handler, conn, > &cq_attr); ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS 2024-09-18 8:35 [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS Håkon Bugge 2024-09-18 8:35 ` [MAINLINE 1/2] RDMA/core: Enable legacy ULPs to use RDMA DIM Håkon Bugge 2024-09-18 8:35 ` [MAINLINE 2/2] rds: ib: Add Dynamic Interrupt Moderation to CQs Håkon Bugge @ 2024-09-19 14:17 ` Christoph Hellwig 2024-09-20 9:46 ` Haakon Bugge 2 siblings, 1 reply; 23+ messages in thread From: Christoph Hellwig @ 2024-09-19 14:17 UTC (permalink / raw) To: Håkon Bugge Cc: Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, linux-rdma, linux-kernel, netdev, rds-devel On Wed, Sep 18, 2024 at 10:35:50AM +0200, Håkon Bugge wrote: > The Dynamic Interrupt Moderation mechanism can only be used by ULPs > using ib_alloc_cq() and family. We extend DIM to also cover legacy > ULPs using ib_create_cq(). The last commit takes advantage of this end > uses DIM in RDS. I would much prefer if you could move RDS off that horrible API finally instead of investing more effort into it and making it more complicated. ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS 2024-09-19 14:17 ` [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS Christoph Hellwig @ 2024-09-20 9:46 ` Haakon Bugge 2024-09-20 13:51 ` Christoph Hellwig 0 siblings, 1 reply; 23+ messages in thread From: Haakon Bugge @ 2024-09-20 9:46 UTC (permalink / raw) To: Christoph Hellwig Cc: Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, OFED mailing list, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, rds-devel@oss.oracle.com Hi Christoph, > On 19 Sep 2024, at 16:17, Christoph Hellwig <hch@infradead.org> wrote: > > On Wed, Sep 18, 2024 at 10:35:50AM +0200, Håkon Bugge wrote: >> The Dynamic Interrupt Moderation mechanism can only be used by ULPs >> using ib_alloc_cq() and family. We extend DIM to also cover legacy >> ULPs using ib_create_cq(). The last commit takes advantage of this end >> uses DIM in RDS. > > I would much prefer if you could move RDS off that horrible API finally > instead of investing more effort into it and making it more complicated. ib_alloc_cq() and family does not support arming the CQ with the IB_CQ_SOLICITED flag, which RDS uses. Thxs, Håkon ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS 2024-09-20 9:46 ` Haakon Bugge @ 2024-09-20 13:51 ` Christoph Hellwig 2024-09-21 2:28 ` Zhu Yanjun 2024-09-24 7:01 ` Christoph Hellwig 0 siblings, 2 replies; 23+ messages in thread From: Christoph Hellwig @ 2024-09-20 13:51 UTC (permalink / raw) To: Haakon Bugge Cc: Christoph Hellwig, Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, OFED mailing list, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, rds-devel@oss.oracle.com On Fri, Sep 20, 2024 at 09:46:06AM +0000, Haakon Bugge wrote: > > I would much prefer if you could move RDS off that horrible API finally > > instead of investing more effort into it and making it more complicated. > > ib_alloc_cq() and family does not support arming the CQ with the IB_CQ_SOLICITED flag, which RDS uses. Then work on supporting it. RDS and SMC are the only users, so one of the maintainers needs to drive it. ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS 2024-09-20 13:51 ` Christoph Hellwig @ 2024-09-21 2:28 ` Zhu Yanjun 2024-09-22 14:11 ` Leon Romanovsky 2024-09-23 12:03 ` Christoph Hellwig 2024-09-24 7:01 ` Christoph Hellwig 1 sibling, 2 replies; 23+ messages in thread From: Zhu Yanjun @ 2024-09-21 2:28 UTC (permalink / raw) To: Christoph Hellwig, Haakon Bugge Cc: Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, OFED mailing list, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, rds-devel@oss.oracle.com 在 2024/9/20 21:51, Christoph Hellwig 写道: > On Fri, Sep 20, 2024 at 09:46:06AM +0000, Haakon Bugge wrote: >>> I would much prefer if you could move RDS off that horrible API finally >>> instead of investing more effort into it and making it more complicated. >> >> ib_alloc_cq() and family does not support arming the CQ with the IB_CQ_SOLICITED flag, which RDS uses. > > Then work on supporting it. RDS and SMC are the only users, so one Some other open source projects are also the users. Zhu Yanjun > of the maintainers needs to drive it. > ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS 2024-09-21 2:28 ` Zhu Yanjun @ 2024-09-22 14:11 ` Leon Romanovsky 2024-09-23 12:03 ` Christoph Hellwig 1 sibling, 0 replies; 23+ messages in thread From: Leon Romanovsky @ 2024-09-22 14:11 UTC (permalink / raw) To: Zhu Yanjun Cc: Christoph Hellwig, Haakon Bugge, Jason Gunthorpe, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, OFED mailing list, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, rds-devel@oss.oracle.com On Sat, Sep 21, 2024 at 10:28:48AM +0800, Zhu Yanjun wrote: > 在 2024/9/20 21:51, Christoph Hellwig 写道: > > On Fri, Sep 20, 2024 at 09:46:06AM +0000, Haakon Bugge wrote: > > > > I would much prefer if you could move RDS off that horrible API finally > > > > instead of investing more effort into it and making it more complicated. > > > > > > ib_alloc_cq() and family does not support arming the CQ with the IB_CQ_SOLICITED flag, which RDS uses. > > > > Then work on supporting it. RDS and SMC are the only users, so one > > Some other open source projects are also the users. What are these projects? I see only RDS and SMC. Thanks > > Zhu Yanjun > > > of the maintainers needs to drive it. > > > > ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS 2024-09-21 2:28 ` Zhu Yanjun 2024-09-22 14:11 ` Leon Romanovsky @ 2024-09-23 12:03 ` Christoph Hellwig 2024-09-24 1:58 ` Zhu Yanjun 1 sibling, 1 reply; 23+ messages in thread From: Christoph Hellwig @ 2024-09-23 12:03 UTC (permalink / raw) To: Zhu Yanjun Cc: Christoph Hellwig, Haakon Bugge, Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, OFED mailing list, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, rds-devel@oss.oracle.com On Sat, Sep 21, 2024 at 10:28:48AM +0800, Zhu Yanjun wrote: > 在 2024/9/20 21:51, Christoph Hellwig 写道: > > On Fri, Sep 20, 2024 at 09:46:06AM +0000, Haakon Bugge wrote: > > > > I would much prefer if you could move RDS off that horrible API finally > > > > instead of investing more effort into it and making it more complicated. > > > > > > ib_alloc_cq() and family does not support arming the CQ with the IB_CQ_SOLICITED flag, which RDS uses. > > > > Then work on supporting it. RDS and SMC are the only users, so one > > Some other open source projects are also the users. I'm not sure what you mean with "open source projects", but the only thing that matters is users in the kernel tree. ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS 2024-09-23 12:03 ` Christoph Hellwig @ 2024-09-24 1:58 ` Zhu Yanjun 2024-09-24 6:54 ` Christoph Hellwig 0 siblings, 1 reply; 23+ messages in thread From: Zhu Yanjun @ 2024-09-24 1:58 UTC (permalink / raw) To: Christoph Hellwig Cc: Haakon Bugge, Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, OFED mailing list, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, rds-devel@oss.oracle.com 在 2024/9/23 20:03, Christoph Hellwig 写道: > On Sat, Sep 21, 2024 at 10:28:48AM +0800, Zhu Yanjun wrote: >> 在 2024/9/20 21:51, Christoph Hellwig 写道: >>> On Fri, Sep 20, 2024 at 09:46:06AM +0000, Haakon Bugge wrote: >>>>> I would much prefer if you could move RDS off that horrible API finally >>>>> instead of investing more effort into it and making it more complicated. >>>> >>>> ib_alloc_cq() and family does not support arming the CQ with the IB_CQ_SOLICITED flag, which RDS uses. >>> >>> Then work on supporting it. RDS and SMC are the only users, so one >> >> Some other open source projects are also the users. > > I'm not sure what you mean with "open source projects", but the only > thing that matters is users in the kernel tree. The users that I mentioned is not in the kernel tree. Best Regards, Zhu Yanjun > ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS 2024-09-24 1:58 ` Zhu Yanjun @ 2024-09-24 6:54 ` Christoph Hellwig 2024-09-24 13:59 ` Zhu Yanjun 0 siblings, 1 reply; 23+ messages in thread From: Christoph Hellwig @ 2024-09-24 6:54 UTC (permalink / raw) To: Zhu Yanjun Cc: Christoph Hellwig, Haakon Bugge, Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, OFED mailing list, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, rds-devel@oss.oracle.com On Tue, Sep 24, 2024 at 09:58:24AM +0800, Zhu Yanjun wrote: > The users that I mentioned is not in the kernel tree. And why do you think that would matter the slightest? ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS 2024-09-24 6:54 ` Christoph Hellwig @ 2024-09-24 13:59 ` Zhu Yanjun 2024-09-24 15:16 ` Haakon Bugge 0 siblings, 1 reply; 23+ messages in thread From: Zhu Yanjun @ 2024-09-24 13:59 UTC (permalink / raw) To: Christoph Hellwig Cc: Haakon Bugge, Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, OFED mailing list, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, rds-devel@oss.oracle.com 在 2024/9/24 14:54, Christoph Hellwig 写道: > On Tue, Sep 24, 2024 at 09:58:24AM +0800, Zhu Yanjun wrote: >> The users that I mentioned is not in the kernel tree. > > And why do you think that would matter the slightest? I noticed that the same cq functions are used. And I also made tests with this patch series. Without this patch series, dim mechanism will not be invoked. Zhu Yanjun > ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS 2024-09-24 13:59 ` Zhu Yanjun @ 2024-09-24 15:16 ` Haakon Bugge 2024-09-25 2:04 ` Zhu Yanjun 0 siblings, 1 reply; 23+ messages in thread From: Haakon Bugge @ 2024-09-24 15:16 UTC (permalink / raw) To: Zhu Yanjun Cc: Christoph Hellwig, Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, OFED mailing list, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, rds-devel@oss.oracle.com > On 24 Sep 2024, at 15:59, Zhu Yanjun <yanjun.zhu@linux.dev> wrote: > > 在 2024/9/24 14:54, Christoph Hellwig 写道: >> On Tue, Sep 24, 2024 at 09:58:24AM +0800, Zhu Yanjun wrote: >>> The users that I mentioned is not in the kernel tree. >> And why do you think that would matter the slightest? > > I noticed that the same cq functions are used. And I also made tests with this patch series. Without this patch series, dim mechanism will not be invoked. Christoph alluded to say: Do not modify the old cq_create_cq() code in order to support DIM, it is better to change the ULP to use ib_alloc_cq(), and get DIM enabled that way. Thxs, Håkon ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS 2024-09-24 15:16 ` Haakon Bugge @ 2024-09-25 2:04 ` Zhu Yanjun 2024-09-25 9:26 ` Leon Romanovsky 0 siblings, 1 reply; 23+ messages in thread From: Zhu Yanjun @ 2024-09-25 2:04 UTC (permalink / raw) To: Haakon Bugge Cc: Christoph Hellwig, Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, OFED mailing list, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, rds-devel@oss.oracle.com 在 2024/9/24 23:16, Haakon Bugge 写道: > > >> On 24 Sep 2024, at 15:59, Zhu Yanjun <yanjun.zhu@linux.dev> wrote: >> >> 在 2024/9/24 14:54, Christoph Hellwig 写道: >>> On Tue, Sep 24, 2024 at 09:58:24AM +0800, Zhu Yanjun wrote: >>>> The users that I mentioned is not in the kernel tree. >>> And why do you think that would matter the slightest? >> >> I noticed that the same cq functions are used. And I also made tests with this patch series. Without this patch series, dim mechanism will not be invoked. > > Christoph alluded to say: Do not modify the old cq_create_cq() code in order to support DIM, it is better to change the ULP to use ib_alloc_cq(), and get DIM enabled that way. Hi, Haakon To be honest, I like your original commit that enable DIM for legacy ULPs because this can fix this problem once for all and improve the old ib_create_cq function. The idea from Christoph will cause a lot of changes in ULPs. I am not very sure if these changes cause risks or not. Thus, I prefer to your original commit. But I will follow the advice from Leon and Jason. Zhu Yanjun > > > Thxs, Håkon > ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS 2024-09-25 2:04 ` Zhu Yanjun @ 2024-09-25 9:26 ` Leon Romanovsky 2024-09-26 15:25 ` Zhu Yanjun 0 siblings, 1 reply; 23+ messages in thread From: Leon Romanovsky @ 2024-09-25 9:26 UTC (permalink / raw) To: Zhu Yanjun Cc: Haakon Bugge, Christoph Hellwig, Jason Gunthorpe, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, OFED mailing list, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, rds-devel@oss.oracle.com On Wed, Sep 25, 2024 at 10:04:21AM +0800, Zhu Yanjun wrote: > 在 2024/9/24 23:16, Haakon Bugge 写道: > > > > > > > On 24 Sep 2024, at 15:59, Zhu Yanjun <yanjun.zhu@linux.dev> wrote: > > > > > > 在 2024/9/24 14:54, Christoph Hellwig 写道: > > > > On Tue, Sep 24, 2024 at 09:58:24AM +0800, Zhu Yanjun wrote: > > > > > The users that I mentioned is not in the kernel tree. > > > > And why do you think that would matter the slightest? > > > > > > I noticed that the same cq functions are used. And I also made tests with this patch series. Without this patch series, dim mechanism will not be invoked. > > > > Christoph alluded to say: Do not modify the old cq_create_cq() code in order to support DIM, it is better to change the ULP to use ib_alloc_cq(), and get DIM enabled that way. > > Hi, Haakon > > To be honest, I like your original commit that enable DIM for legacy ULPs > because this can fix this problem once for all and improve the old > ib_create_cq function. > > The idea from Christoph will cause a lot of changes in ULPs. I am not very > sure if these changes cause risks or not. > > Thus, I prefer to your original commit. But I will follow the advice from > Leon and Jason. Christoph was very clear and he summarized our position very well. We said similar thing to SMC folks in 2022 [1] and RDS is no different here. So no, "old ib_create_cq" shouldn't be used by ULPs. Thanks [1] https://lore.kernel.org/netdev/YePesYRnrKCh1vFy@unreal/ > > Zhu Yanjun > > > > > > > Thxs, Håkon > > > > ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS 2024-09-25 9:26 ` Leon Romanovsky @ 2024-09-26 15:25 ` Zhu Yanjun 0 siblings, 0 replies; 23+ messages in thread From: Zhu Yanjun @ 2024-09-26 15:25 UTC (permalink / raw) To: Leon Romanovsky Cc: Haakon Bugge, Christoph Hellwig, Jason Gunthorpe, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, OFED mailing list, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, rds-devel@oss.oracle.com 在 2024/9/25 17:26, Leon Romanovsky 写道: > On Wed, Sep 25, 2024 at 10:04:21AM +0800, Zhu Yanjun wrote: >> 在 2024/9/24 23:16, Haakon Bugge 写道: >>> >>> >>>> On 24 Sep 2024, at 15:59, Zhu Yanjun <yanjun.zhu@linux.dev> wrote: >>>> >>>> 在 2024/9/24 14:54, Christoph Hellwig 写道: >>>>> On Tue, Sep 24, 2024 at 09:58:24AM +0800, Zhu Yanjun wrote: >>>>>> The users that I mentioned is not in the kernel tree. >>>>> And why do you think that would matter the slightest? >>>> >>>> I noticed that the same cq functions are used. And I also made tests with this patch series. Without this patch series, dim mechanism will not be invoked. >>> >>> Christoph alluded to say: Do not modify the old cq_create_cq() code in order to support DIM, it is better to change the ULP to use ib_alloc_cq(), and get DIM enabled that way. >> >> Hi, Haakon >> >> To be honest, I like your original commit that enable DIM for legacy ULPs >> because this can fix this problem once for all and improve the old >> ib_create_cq function. >> >> The idea from Christoph will cause a lot of changes in ULPs. I am not very >> sure if these changes cause risks or not. >> >> Thus, I prefer to your original commit. But I will follow the advice from >> Leon and Jason. > > Christoph was very clear and he summarized our position very well. We > said similar thing to SMC folks in 2022 [1] and RDS is no different here. Thanks, Leon. I will read this link carefully. > > So no, "old ib_create_cq" shouldn't be used by ULPs. Got it. I have replaced ib_create_cq with ib cq pool APIs. Perhaps drivers/infiniband/ulp/srpt/ib_srpt.c is a good example to use ib cq pool APIs. Best Regards, Zhu Yanjun > > Thanks > > [1] https://lore.kernel.org/netdev/YePesYRnrKCh1vFy@unreal/ > >> >> Zhu Yanjun >> >>> >>> >>> Thxs, Håkon >>> >> >> ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS 2024-09-20 13:51 ` Christoph Hellwig 2024-09-21 2:28 ` Zhu Yanjun @ 2024-09-24 7:01 ` Christoph Hellwig 2024-09-24 8:59 ` Haakon Bugge 1 sibling, 1 reply; 23+ messages in thread From: Christoph Hellwig @ 2024-09-24 7:01 UTC (permalink / raw) To: Haakon Bugge Cc: Christoph Hellwig, Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, OFED mailing list, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, rds-devel@oss.oracle.com On Fri, Sep 20, 2024 at 06:51:18AM -0700, Christoph Hellwig wrote: > On Fri, Sep 20, 2024 at 09:46:06AM +0000, Haakon Bugge wrote: > > > I would much prefer if you could move RDS off that horrible API finally > > > instead of investing more effort into it and making it more complicated. > > > > ib_alloc_cq() and family does not support arming the CQ with the IB_CQ_SOLICITED flag, which RDS uses. > > Then work on supporting it. RDS and SMC are the only users, so one > of the maintainers needs to drive it. I took a quick look at what it would take, and adding IB_CQ_SOLICITED support to the cq API looks pretty trivial, you'll just need to pass it to ib_cq_pool_get by adding a new argument and the pass it down to __ib_alloc_cq. So yes, please get started at moving RDS out of the stone age. ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS 2024-09-24 7:01 ` Christoph Hellwig @ 2024-09-24 8:59 ` Haakon Bugge 2024-09-24 15:20 ` Allison Henderson 0 siblings, 1 reply; 23+ messages in thread From: Haakon Bugge @ 2024-09-24 8:59 UTC (permalink / raw) To: Christoph Hellwig Cc: Jason Gunthorpe, Leon Romanovsky, Allison Henderson, David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, OFED mailing list, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, rds-devel@oss.oracle.com > On 24 Sep 2024, at 09:01, Christoph Hellwig <hch@infradead.org> wrote: > > On Fri, Sep 20, 2024 at 06:51:18AM -0700, Christoph Hellwig wrote: >> On Fri, Sep 20, 2024 at 09:46:06AM +0000, Haakon Bugge wrote: >>>> I would much prefer if you could move RDS off that horrible API finally >>>> instead of investing more effort into it and making it more complicated. >>> >>> ib_alloc_cq() and family does not support arming the CQ with the IB_CQ_SOLICITED flag, which RDS uses. >> >> Then work on supporting it. RDS and SMC are the only users, so one >> of the maintainers needs to drive it. > > I took a quick look at what it would take, and adding IB_CQ_SOLICITED > support to the cq API looks pretty trivial, you'll just need to pass > it to ib_cq_pool_get by adding a new argument and the pass it > down to __ib_alloc_cq. So yes, please get started at moving RDS out > of the stone age. Agree. I'll work on that. I am also inclined to improve it by having designated CPUs where the worker threads polling the CQs execute, as that often improves cache hit rates. But that will come as another commit. Thxs, Håkon ^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS 2024-09-24 8:59 ` Haakon Bugge @ 2024-09-24 15:20 ` Allison Henderson 0 siblings, 0 replies; 23+ messages in thread From: Allison Henderson @ 2024-09-24 15:20 UTC (permalink / raw) To: Haakon Bugge, hch@infradead.org Cc: linux-rdma@vger.kernel.org, davem@davemloft.net, jgg@ziepe.ca, rds-devel@oss.oracle.com, linux-kernel@vger.kernel.org, pabeni@redhat.com, kuba@kernel.org, edumazet@google.com, leon@kernel.org, netdev@vger.kernel.org On Tue, 2024-09-24 at 08:59 +0000, Haakon Bugge wrote: > > > > On 24 Sep 2024, at 09:01, Christoph Hellwig <hch@infradead.org> > > wrote: > > > > On Fri, Sep 20, 2024 at 06:51:18AM -0700, Christoph Hellwig wrote: > > > On Fri, Sep 20, 2024 at 09:46:06AM +0000, Haakon Bugge wrote: > > > > > I would much prefer if you could move RDS off that horrible > > > > > API finally > > > > > instead of investing more effort into it and making it more > > > > > complicated. > > > > > > > > ib_alloc_cq() and family does not support arming the CQ with > > > > the IB_CQ_SOLICITED flag, which RDS uses. > > > > > > Then work on supporting it. RDS and SMC are the only users, so > > > one > > > of the maintainers needs to drive it. > > > > I took a quick look at what it would take, and adding > > IB_CQ_SOLICITED > > support to the cq API looks pretty trivial, you'll just need to > > pass > > it to ib_cq_pool_get by adding a new argument and the pass it > > down to __ib_alloc_cq. So yes, please get started at moving RDS > > out > > of the stone age. > > Agree. I'll work on that. I am also inclined to improve it by having > designated CPUs where the worker threads polling the CQs execute, as > that often improves cache hit rates. But that will come as another > commit. > > > Thxs, Håkon > Ok, sounds like a good plan then. Thanks for working on this Haakon! Allison ^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2024-09-26 15:26 UTC | newest] Thread overview: 23+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-09-18 8:35 [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS Håkon Bugge 2024-09-18 8:35 ` [MAINLINE 1/2] RDMA/core: Enable legacy ULPs to use RDMA DIM Håkon Bugge 2024-09-18 8:35 ` [MAINLINE 2/2] rds: ib: Add Dynamic Interrupt Moderation to CQs Håkon Bugge 2024-09-20 7:47 ` Zhu Yanjun 2024-09-20 9:42 ` Haakon Bugge 2024-09-20 12:51 ` Zhu Yanjun 2024-09-21 13:43 ` Zhu Yanjun 2024-09-19 14:17 ` [MAINLINE 0/2] Enable DIM for legacy ULPs and use it in RDS Christoph Hellwig 2024-09-20 9:46 ` Haakon Bugge 2024-09-20 13:51 ` Christoph Hellwig 2024-09-21 2:28 ` Zhu Yanjun 2024-09-22 14:11 ` Leon Romanovsky 2024-09-23 12:03 ` Christoph Hellwig 2024-09-24 1:58 ` Zhu Yanjun 2024-09-24 6:54 ` Christoph Hellwig 2024-09-24 13:59 ` Zhu Yanjun 2024-09-24 15:16 ` Haakon Bugge 2024-09-25 2:04 ` Zhu Yanjun 2024-09-25 9:26 ` Leon Romanovsky 2024-09-26 15:25 ` Zhu Yanjun 2024-09-24 7:01 ` Christoph Hellwig 2024-09-24 8:59 ` Haakon Bugge 2024-09-24 15:20 ` Allison Henderson
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).