Re: [PATCH rdma-next 00/16] Flow counters support

Alex Rosenbaum
2017-11-02T06:50:22Z

On Wed, Nov 1, 2017 at 11:16 PM, Jason Gunthorpe <jgg-uk2M96/98Pc@public.gmane.org> wrote:
> On Wed, Nov 1, 2017 at 1:46 PM, Alex Rosenbaum <rosenbaumalex-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>>> Then I think my proposed API makes the most sense overall since it
>>> captures this use model as well, even if mlx currently does not support
>>> this use model for flow counters.
>
>> it will force the kernel syscall on each modify, which is something
>> that will limit the usage at scale.
>
> No, it doesn't force that. As we've talked about the driver should
> book-keep in user space as required.
>
>> doing the bookkeeping in user space will require a trigger to commit
>> this to kernel/HW, which can be the modify() or an additional API.
>
> The trigger to push things to the kernel is something like creating a
> flow steering object.

I'm referring to reducing the kernel calls when supporting the on the
fly modification for counter and QP pair updates.
if user wants to add/remove a sampling point on an already operational
QP of flow, calling ibv_add_sampling_point_qp will have to go to
kernel each time, unless we allow multiple add_sampling_point followed
by a ibv_modify_qp(qp, {attr{counter}}) or add some 'flush' flag/API,
or 'more to come' flag until final add_sampling_poing_qp call.

> The driver can bundle the create of the counter object, and the send
> of the counters to add, in with the syscall for creating the flow
> steering object.
>
> Same argument for QP, similar argument for attaching to an existing
> QP.

totally agree about the atomic create of counter with verbs object.
this is well defined with the ibv_create_flow/qp()

Alex