Document all the sysctl values for the nda devices. Include some minimal

documentation on namespace support for nda devices. Fix a few typos
and formatting nits to apease igor.
This commit is contained in:
imp 2020-06-06 06:21:20 +00:00
parent 508f1351bf
commit 8319a544e5

View File

@ -25,7 +25,7 @@
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd December 20, 2017 .Dd June 6, 2020
.Dt NDA 4 .Dt NDA 4
.Os .Os
.Sh NAME .Sh NAME
@ -48,37 +48,156 @@ variables and
.Xr loader 8 .Xr loader 8
tunables: tunables:
.Bl -tag -width 12 .Bl -tag -width 12
.It Va hw.nvme.use_nvd
The
.Xr nvme 4
driver will create
.Nm
device nodes for block storage when set to 0.
Create
.Xr nvd 4
device nodes for block storage when set to 1.
See
.Xr nvd 4
when set to 1.
.It Va kern.cam.nda.nvd_compat
When set to 1,
.Xr nvd 4
aliases will be created for all
.Nm
devices, including partitions and other
.Xr goem 4
providers that take their names from the disk's name.
.Xr nvd
devices will not, however, be reported in the
.Va kern.disks
.Xr sysctl 8 .
.It Va kern.cam.nda.sort_io_queue .It Va kern.cam.nda.sort_io_queue
.Pp
This variable determines whether the software queued entries are This variable determines whether the software queued entries are
sorted in LBA order or not. sorted in LBA order or not.
Sorting is almost always a waste of time. Sorting is almost always a waste of time.
The default is to not sort. The default is to not sort.
.It Va kern.cam.nda.enable_biospeedup
This variable determines if the
.Nm
devices participate in the speedup protocol.
When the device participates in the speedup, then when the upper layers
send a
.Va BIO_SPEEDUP ,
all current
.Va BIO_DELETE
requests not yet sent to the hardware are completed successfully immediate
without sending them to the hardware.
Used in low disk space scenarios when the filesystem encounters
a critical shortage and needs blocks immediately.
Since trims have maximum benefit when the LBA is unused for a long time,
skipping the trim when space is needed for immediate writes results in little to
no excess wear.
When participation is disabled,
.Va BIO_SPEEDUP
requests are ignored.
.It Va kern.cam.nda.max_trim
The maximum number of LBA ranges to be collected together for each DSM trims
send to the hardware.
Defaults to 256, which is the maximum number of ranges the protocol supports.
Sometimes poor trim performance can be mitigated by limiting the number of
ranges sent to the device.
This value must be between 1 and 256 inclusive.
.El .El
.Pp .Pp
The following report per-device settings, and are read-only unless The following report per-device settings, and are read-only unless
otherwise indicated. Replace otherwise indicated.
Replace
.Va N .Va N
with the device unit number. with the device unit number.
.Bl -tag -width 12 .Bl -tag -width 12
.It Va kern.cam.nda.N.rotating .It Va kern.cam.nda.N.rotating
.Pp
This variable reports whether the storage volume is spinning or This variable reports whether the storage volume is spinning or
flash. flash.
It's value is hard coded to 0 indicating flash. Its value is hard coded to 0 indicating flash.
.It Va kern.cam.nda.N.unmapped_io .It Va kern.cam.nda.N.unmapped_io
This variable reports whether the This variable reports whether the
.Nm .Nm
driver accepts unmapped I/O for this unit. driver accepts unmapped I/O for this unit.
.It Va kern.cam.nda.N.flags
This variable reports the current flags.
.Bl -tag -width 12
.It Va OPEN
The device is open.
.It Va DIRTY
Set when a write to the drive is scheduled.
Cleared after flush commands.
.It Va SCTX_INIT
Internal flag set after
.Xr sysctl 8
nodes have been created.
.El .El
.It Va kern.cam.nda.N.sort_io_queue
Same as the
.Va kern.cam.nda.sort_io_queue
tunable.
.It Va kern.cam.nda.N.trim_ticks
Writable.
When greater than zero, hold trims for up to this many ticks before sending
to the drive.
Sometimes waiting a little bit to collect more trims to send at one time
improves trim performance.
When 0, no delaying of trims are done.
.It Va kern.cam.nda.N.trim_goal
Writable.
When delaying a bit to collect multiple trims, send the accumulated DSM TRIM to
the drive.
.It Va kern.cam.nda.N.trim_lbas
Total number of LBAs that have been trimmed.
.It Va kern.cam.nda.N.trim_ranges
Total number of LBA ranges that have been trimmed.
.It Va kern.cam.nda.N.trim_count
Total number of trims sent to the hardware.
.It Va kern.cam.nda.N.deletes
Total number of
.Va BIO_DELETE
requests queued to the device.
.El
.Sh NAMESPACE MAPPING
Each
.Xr nvme 4
drive has one or more namespaces associated with it.
One instance of the
.Nm
driver will be created for each of the namespaces on
the drive.
All the
.Nm
nodes for a
.Xr nvme 4
device are at target 0.
However, the namespace ID maps to the CAM lun, as reported
in kernel messages and in the
.Va devlist
sub command of
.Xr camcontrol 8 .
.Pp
Namespaces are managed with the
.Va ns
sub command of
.Xr nvmecontrol 8 .
Not all drives support namespace management,
but all drives support at least one namespace.
Device nodes for
.Nm
will be created and destroyed dynamically as
namespaces are activated or detached.
.Sh FILES .Sh FILES
.Bl -tag -width ".Pa /dev/nda*" -compact .Bl -tag -width ".Pa /dev/nda*" -compact
.It Pa /dev/nda* .It Pa /dev/nda*
NVMe storage device nodes NVMe storage device nodes
.El .El
.Sh SEE ALSO .Sh SEE ALSO
.Xr cam 4 ,
.Xr geom 4 ,
.Xr nvd 4 , .Xr nvd 4 ,
.Xr nvme 4 .Xr nvme 4 ,
.Xr gpart 8
.Sh HISTORY .Sh HISTORY
The The
.Nm .Nm