Re: [PATCH 7/8] xprtrdma: Split the completion queue

Sagi Grimberg
2014-04-16T15:23:22Z

On 4/16/2014 6:08 PM, Chuck Lever wrote:
> Hi Sagi-
>
> Thanks for the review! In-line replies below.
<SNIP>
>
>>> 2. If I understood correctly, I see that the CQs are loop-polled in an interrupt context.
>>> This may become problematic in stress workload where the CQ simply never drains (imagine
>>> some studios task keeps posting WRs as soon as IOs complete). This will cause CQ poll loop
>>> to go on forever. This situation may cause starvation of other CQs that share the same EQ (CPU
>>> is hogged by the endless poller).
>>> This may be solved in 2 ways:
>>> - Use blk-iopoll to maintain fairness - the downside will be moving from interrupt context to soft-irq (slower).
>>> - Set some configurable budget to CQ poller - after finishing the budget, notify the CQ and bail.
>>> If there is another CQ waiting to get in - it's only fair that it will be given with a chance, else another interrupt
>>> on that CQ will immediately come.
> I think it would be a reasonable change to pass an array of WC’s to
> ib_poll_cq() just once in rpcrdma_{send,recv}cq_poll(), instead of
> looping. Would that be enough?
>
> To be clear, my patch merely cleans up the completion handler logic,
> which already did loop-polling. Should we consider this improvement
> for another patch?

Well, I wasn't suggesting passing an array, carrying it around (or on
the stack for that manner) might be annoying...
I was suggesting a budget (poll loops or a time bound - jiffy is usually
well behaved).

Sagi.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in