← All changes
Longhorn UI · Developed by us

Choose how many NVMe-TCP I/O queues a v2 volume uses

A v2 volume opens one I/O queue per CPU core by default, and each queue costs memory on the storage node. Longhorn can now set the count per volume, so we added the field to Create Volume and show the value in the volume details.

In review PR 1098 ↗ Issue 13735 ↗ Backend issue 13706 ↗ Detailed review ↗
What changes for the user

The flow

1

A new field in Create Volume

Pick the v2 data engine with the Block Device frontend, and the queue field appears under Frontend, set to 0.

Create Volume before and after: the NVMe-TCP IO Queues field appears under Frontend
Before, every v2 volume used the global setting. Now each volume can set its own number. It sits in the same place as UBLK's queue fields.
2

The help text explains the number

The tooltip gives the full name, the current global value, when the value applies, and the CPU limit.

Tooltip on the NVMe-TCP IO Queues field
The node never creates more queues than it has CPU cores, so this setting can only lower the count.
3

Out-of-range values are rejected

Typing 200 shows "Must be between 0 and 128". When the field loses focus, the value is clamped.

Validation error for 200
The same 0–128 range that the backend accepts.
4

Other frontends don't show the field

UBLK keeps its own two queue fields, and v1 volumes and NVMf show neither.

Create Volume with the UBLK frontend: no NVMe-TCP field
Only Block Device connects over NVMe-TCP, so the field is hidden for the others and nothing is sent.
5

Volume details show the value

A v2 Block Device volume now shows its queue count under Frontend, with an info icon that explains 0.

Volume details before and after: NVMe-TCP IO Queues: 1
This volume was created with 1 queue. Before, the details page had no way to show it.

Video (optional)

0:00 Before · 0:15 After

Notes