[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 1/4] scsi: scan: allocate sdev and starget on the NUMA node of the host adapter
- To: "Martin K . Petersen" <martin.petersen@xxxxxxxxxx>, Jens Axboe <axboe@xxxxxxxxx>
- From: Sumit Saxena <sumit.saxena@xxxxxxxxxxxx>
- Date: Tue, 9 Jun 2026 17:48:00 +0530
- Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=google header.d=broadcom.com header.i="@broadcom.com" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From"
- Cc: "James E . J . Bottomley" <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx>, linux-scsi@xxxxxxxxxxxxxxx, linux-block@xxxxxxxxxxxxxxx, Adam Radford <aradford@xxxxxxxxx>, Khalid Aziz <khalid@xxxxxxxxxxxxxx>, Adaptec OEM Raid Solutions <aacraid@xxxxxxxxxxxxx>, Matthew Wilcox <willy@xxxxxxxxxxxxx>, Hannes Reinecke <hare@xxxxxxxx>, "Juergen E . Fischer" <fischer@xxxxxxxxx>, Russell King <linux@xxxxxxxxxxxxxxx>, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, Finn Thain <fthain@xxxxxxxxxxxxxx>, Michael Schmitz <schmitzmic@xxxxxxxxx>, Anil Gurumurthy <anil.gurumurthy@xxxxxxxxxx>, Sudarsana Kalluru <sudarsana.kalluru@xxxxxxxxxx>, Oliver Neukum <oliver@xxxxxxxxxx>, Ali Akcaagac <aliakc@xxxxxx>, Jamie Lenehan <lenehan@xxxxxxxxxxx>, Ram Vegesna <ram.vegesna@xxxxxxxxxxxx>, target-devel@xxxxxxxxxxxxxxx, Bradley Grove <linuxdrivers@xxxxxxxxxxxx>, Satish Kharat <satishkh@xxxxxxxxx>, Sesidhar Baddela <sebaddel@xxxxxxxxx>, Karan Tilak Kumar <kartilak@xxxxxxxxx>, Yihang Li <liyihang9@xxxxxxxxxxxxxx>, Don Brace <don.brace@xxxxxxxxxxxxx>, storagedev@xxxxxxxxxxxxx, HighPoint Linux Team <linux@xxxxxxxxxxxxxxxxxx>, Tyrel Datwyler <tyreld@xxxxxxxxxxxxx>, Madhavan Srinivasan <maddy@xxxxxxxxxxxxx>, Michael Ellerman <mpe@xxxxxxxxxxxxxx>, Nicholas Piggin <npiggin@xxxxxxxxx>, Christophe Leroy <chleroy@xxxxxxxxxx>, linuxppc-dev@xxxxxxxxxxxxxxxx, Brian King <brking@xxxxxxxxxx>, Lee Duncan <lduncan@xxxxxxxx>, Chris Leech <cleech@xxxxxxxxxx>, Mike Christie <michael.christie@xxxxxxxxxx>, open-iscsi@xxxxxxxxxxxxxxxx, Justin Tee <justin.tee@xxxxxxxxxxxx>, Paul Ely <paul.ely@xxxxxxxxxxxx>, Kashyap Desai <kashyap.desai@xxxxxxxxxxxx>, Shivasharan S <shivasharan.srikanteshwara@xxxxxxxxxxxx>, Chandrakanth Patil <chandrakanth.patil@xxxxxxxxxxxx>, megaraidlinux.pdl@xxxxxxxxxxxx, Sathya Prakash Veerichetty <sathya.prakash@xxxxxxxxxxxx>, Sreekanth Reddy <sreekanth.reddy@xxxxxxxxxxxx>, mpi3mr-linuxdrv.pdl@xxxxxxxxxxxx, Suganath Prabu Subramani <suganath-prabu.subramani@xxxxxxxxxxxx>, Ranjan Kumar <ranjan.kumar@xxxxxxxxxxxx>, MPT-FusionLinux.pdl@xxxxxxxxxxxx, Daniel Palmer <daniel@xxxxxxxxx>, GOTO Masanori <gotom@xxxxxxxxxxxx>, YOKOTA Hiroshi <yokota@xxxxxxxxxxxxxxxxxxxxxxx>, Jack Wang <jinpu.wang@xxxxxxxxxxxxxxx>, Geoff Levand <geoff@xxxxxxxxxxxxx>, Michael Reed <mdr@xxxxxxx>, Nilesh Javali <njavali@xxxxxxxxxxx>, GR-QLogic-Storage-Upstream@xxxxxxxxxxx, Narsimhulu Musini <nmusini@xxxxxxxxx>, "K . Y . Srinivasan" <kys@xxxxxxxxxxxxx>, Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>, Wei Liu <wei.liu@xxxxxxxxxx>, Dexuan Cui <decui@xxxxxxxxxxxxx>, Long Li <longli@xxxxxxxxxxxxx>, linux-hyperv@xxxxxxxxxxxxxxx, "Michael S . Tsirkin" <mst@xxxxxxxxxx>, Jason Wang <jasowang@xxxxxxxxxx>, Paolo Bonzini <pbonzini@xxxxxxxxxx>, Stefan Hajnoczi <stefanha@xxxxxxxxxx>, Eugenio Perez <eperezma@xxxxxxxxxx>, virtualization@xxxxxxxxxxxxxxx, Vishal Bhakta <vishal.bhakta@xxxxxxxxxxxx>, bcm-kernel-feedback-list@xxxxxxxxxxxx, Juergen Gross <jgross@xxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx, James Rizzo <james.rizzo@xxxxxxxxxxxx>, Sumit Saxena <sumit.saxena@xxxxxxxxxxxx>
- Delivery-date: Tue, 09 Jun 2026 11:49:07 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
From: James Rizzo <james.rizzo@xxxxxxxxxxxx>
When a host adapter is attached to a specific NUMA node, allocating
scsi_device and scsi_target via kzalloc() may place them on a remote
node. All hot-path I/O accesses to these structures then cross the NUMA
interconnect, adding latency and consuming inter-node bandwidth.
Use kzalloc_node() with dev_to_node(shost->dma_dev) so allocations land
on the same node as the HBA, reducing cross-node traffic and improving
I/O performance on NUMA systems.
Signed-off-by: James Rizzo <james.rizzo@xxxxxxxxxxxx>
Signed-off-by: Sumit Saxena <sumit.saxena@xxxxxxxxxxxx>
---
drivers/scsi/scsi_scan.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index e27da038603a..121a14d5fdb8 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -34,6 +34,7 @@
#include <linux/kthread.h>
#include <linux/spinlock.h>
#include <linux/async.h>
+#include <linux/topology.h>
#include <linux/slab.h>
#include <linux/unaligned.h>
@@ -287,8 +288,8 @@ static struct scsi_device *scsi_alloc_sdev(struct
scsi_target *starget,
struct Scsi_Host *shost = dev_to_shost(starget->dev.parent);
struct queue_limits lim;
- sdev = kzalloc(sizeof(*sdev) + shost->transportt->device_size,
- GFP_KERNEL);
+ sdev = kzalloc_node(sizeof(*sdev) + shost->transportt->device_size,
+ GFP_KERNEL, dev_to_node(shost->dma_dev));
if (!sdev)
goto out;
@@ -502,7 +503,7 @@ static struct scsi_target *scsi_alloc_target(struct device
*parent,
struct scsi_target *found_target;
int error, ref_got;
- starget = kzalloc(size, GFP_KERNEL);
+ starget = kzalloc_node(size, GFP_KERNEL, dev_to_node(shost->dma_dev));
if (!starget) {
printk(KERN_ERR "%s: allocation failure\n", __func__);
return NULL;
--
2.43.7
|