Re: [PATCH v2] nvme-tcp: pin io_cpu to submitter cpu
From: Saravanan D
Date: Fri Aug 21 2026 - 20:49:43 EST
On Fri, 21 Aug 2026 21:17:49 +0530 Nilay Shroff <nilay@xxxxxxxxxxxxx> wrote:
> It seems that here multi tenants shares the same NVMe/TCP controller.
> So if the concern is CPU isolation between tenants, why are multiple
> tenants sharing the same NVMe/TCP controller? Wouldn't a per-tenant
> controller/connection provide better isolation and allow each
> controller's queues to be mapped to the tenant's CPU set?
The controllers are shared because the tenant VMs' virtio-blk devices
are backed by namespaces under one multipath subsystem the hypervisor host
connects to. With many VMs per host, maintaining a per-tenant controller
is not always feasible because of the overhead on the host and risk of
running into target connection limits. blk-mq spreads any controller's
queues across every online CPU, so nvme_tcp_set_queue_io_cpu() picks io_cpu
from a machine wide map whether the controller is shared or dedicated.
Tying socket work to the submitting CPU will reduce VM steal time in
these deployment scenarios.
Saravanan D.