[PATCH v2] nvme-tcp: send quota for nvme_tcp_send_all()

Hannes Reinecke hare at suse.de
Tue Oct 25 00:09:37 PDT 2022


On 10/25/22 02:54, Chaitanya Kulkarni wrote:
> On 10/24/22 08:03, Daniel Wagner wrote:
>> Add a send quota in nvme_tcp_send_all() to avoid stalls when sending
>> large amounts of requests.
>>
>> Cc: Hannes Reinecke <hare at suse.de>
>> Signed-off-by: Daniel Wagner <dwagner at suse.de>
>> ---
>>
>> IMO, this patch might still be a good idea to add. At least in my test
>> setup where I only have one ethernet port it makes a big difference
>> when accessing the system via ssh. When nvme-tcp is pushing a lot of
>> data via the network, the ssh session is completely blocked by the
>> storage traffic. With it, the ssh session stays responsive. >
> 
> I'm not sure whether it is possible but is there a way to gather
> some form of quantitative data and present it here to we all know
> exactly which aspect is improving by this patch in context of
> "ssd session is completely blocked" ?
> 
Doubt that we can do it. Point is, the send code will run in a tight 
loop, making scheduling of other processes / packets really hard.
So if you have several processes on the same interface (as here with the 
ssh connection) nvme-tcp will eat up the entire bandwidth sending its 
data, and everyone else on the line will suffer.

I guess the same effect could be had by adding a 'schedule()' after each 
nvme_tcp_try_send() call.

Cheers,

Hannes
-- 
Dr. Hannes Reinecke                Kernel Storage Architect
hare at suse.de                              +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Ivo Totev, Andrew
Myers, Andrew McDonald, Martje Boudien Moerman




More information about the Linux-nvme mailing list