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:
parent
508f1351bf
commit
8319a544e5
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user