summaryrefslogtreecommitdiff
path: root/lib/string_helpers.c
diff options
context:
space:
mode:
authorMike Christie <michael.christie@oracle.com>2024-12-03 22:15:12 +0300
committerMichael S. Tsirkin <mst@redhat.com>2025-02-25 15:10:46 +0300
commitbca939d5bcd00d6faea99c47eafd60bed573ef03 (patch)
treedc982092681e49f3f175cd46e854a036dc90529a /lib/string_helpers.c
parent891b99eab0f89dbe08d216f4ab71acbeaf7a3102 (diff)
downloadlinux-bca939d5bcd00d6faea99c47eafd60bed573ef03.tar.xz
vhost-scsi: Dynamically allocate scatterlists
We currently preallocate scatterlists which have 2048 entries for each command. For a small device with just 1 queue this results in: 8 MB = 32 bytes per sg * 2048 entries * 128 cmd When mq is turned on and we increase the virtqueue_size so we can handle commands from multiple queues in parallel, then this can sky rocket. This patch allows us to dynamically allocate the scatterlist like is done with drivers like NVMe and SCSI. For small IO (4-16K) IOPs testing, we didn't see any regressions, but for throughput testing we sometimes saw a 2-5% regression when the backend device was very fast (8 NVMe drives in a MD RAID0 config or a memory backed device). As a result this patch makes the dynamic allocation feature a modparam so userspace can decide how it wants to balance mem use and perf. Signed-off-by: Mike Christie <michael.christie@oracle.com> Message-Id: <20241203191705.19431-6-michael.christie@oracle.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'lib/string_helpers.c')
0 files changed, 0 insertions, 0 deletions