Re: [PATCH 0/3] nvme-cli: NIC topology aware I/O queue scaling

Sagi Grimberg <[email protected]>
Newsgroups org.infradead.lists.linux-nvme
Message-ID <[email protected]>

On 24/08/2026 11:48, Nilay Shroff wrote:
> On 8/23/26 3:13 AM, Sagi Grimberg wrote:
>>
>>
>> On 21/08/2026 17:43, Nilay Shroff wrote:
>>> Hi,
>>>
>>> This series is a rework of the earlier patchset[1]. The main
>>> difference is that --nr-io-queues is now calculated in nvme-cli
>>> instead of in the kernel when establishing an NVMe/TCP connection.
>>>
>>> This rework is based on the feedback received[2] from the netdev
>>> maintainers.
>>>
>>> The original patchset determined the number of NVMe/TCP I/O queues
>>> based on the number of online CPUs and the number of hardware queues
>>> available on the NIC in kernel driver. This series moves that logic
>>> to nvme-cli.
>>>
>>> When --nr-io-queues is not explicitly specified, nvme-cli determines
>>> the egress netdev for the NVMe/TCP connection, retrieves its current
>>> hardware queue count, and calculates the default as:
>>>
>>>     min(nr_hw_queues, num_online_cpus)
>>
>> This looks reasonable Nilay.
>>
> Thank you...
>
>> I am wandering tho if we want to place some lower limit here.
>> For example, my laptop has a virtio device with 4 cpu cores and
>> a single combined ring:
>> -- 
>> $ lscpu | grep NUMA
>> NUMA node(s):                            1
>> NUMA node0 CPU(s):                       0-3
>> $ ethtool -l enp7s0
>> Channel parameters for enp7s0:
>> Pre-set maximums:
>> RX:        n/a
>> TX:        n/a
>> Other:        n/a
>> Combined:    1
>> Current hardware settings:
>> RX:        n/a
>> TX:        n/a
>> Other:        n/a
>> Combined:    1
>> -- 
>>
>> It would be kinda annoying for me to now explicitly pass the 
>> nr-io-queues...
>> I am wandering if some sort of threshold make sense as what you are 
>> aiming for
>> is reducing the amount of queues for large cpu counts...
>
> I think you're running a QEMU guest using user-mode (SLIRP) 
> networking, so having
> a combined queue count of 1 is expected.
>
> I also tested this setup before posting the change. With QEMU 
> user-mode networking,
> increasing --nr-io-queues beyond 1 (I tried 4 and 8 with vCPU set to 
> match those
> numbers) did not improve performance. In fact, limiting --nr-io-queues 
> to 1, which
> matches the netdev's single combined queue, gave slightly better 
> performance.
>
> My understanding is that in this topology there is only a single 
> underlying
> virtqueue/network queue, so creating multiple NVMe/TCP I/O queues does 
> not provide
> additional network parallelism. Instead, those NVMe/TCP queues end up 
> contending
> on the same virtqueue/network queue, which can add overhead without 
> providing additional
> throughput.

I don't care about performance. I care that if I am testing stuff, I 
want more than a single
queue. And it is annoying to explicitly change the queue count...

Also, I don't know if your performance statements are correct for TLS.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.