Re: [PATCH for-next 0/2] IB/mlx5: Use tasklet to decrease completions processing time in interrupts

Sagi Grimberg
2016-04-18T14:33:46Z

Hey Matan, Christoph,

>> Just curious: how much of this time is spent inside the mlx5 driver,
>> and how much is spent in the callbacks from the consumers? We've now
>> more than half done with switch the kernel ULPs to the new CQ API
>> which will always offload the callbacks to softirq or workqueue context,
>> so if we can avoid a previous offload the completions would be a lot
>> more efficient.
>>
>
> In short, you could hit a situation where processing the completions in
> the interrupt takes longer than the rate at which they arrive (lab cases
> that use one event queue, but still).
> I agree that going to softirqs/WQs (like the rest of the offloads) is a
> good solution too - maybe even better than this one as the mechanism
> already exists, but why would it be a lot more efficient?

The reasons are:
- irq_poll mechanism correctly budgets the time you spend in soft-IRQ.
- it maintains fairness for all the CQs directed to the same EQ.
- it has the perk that you only re-arm the CQ when you consumed all the
completions (without staying in soft-IRQ forever).

Basically it's the same answer as to why using napi is better...