BTW, NVMe v1.3 introduces controller hints for optimal I/O boundary, optimal write size, preferred write granularity/alignment, and preferred deallocation granularity/alignment.
This extends the LBA sector size (LBADS), which can be any degree of 2 in NVMe 1.x specs, but is traditionally set to 512 Bytes by most SSD devices.
StorNVMe.sys driver in Windows 10 currently supports optimal I/O boundary hint (NOIOB), but not write size (NOWS) or other alignment/granularity hints (NPWG, NPWA, NPDG, NPDA).
https://docs.microsoft.com/en-us/windows-hardware/drivers/storage/stornvme-feature-support
https://nvmexpress.org/specifications/
Identify – LBA Format Data Structure, NVM Command Set Specific
LBA Data Size (LBADS):
This field indicates the LBA data size supported. The value is reported in terms of a power of two (2^n). A value smaller than 9 (i.e., 512 bytes) is not supported.
Identify – Identify Controller Data Structure
Maximum Data Transfer Size (MDTS): This field indicates the maximum data transfer size for a command that transfers data between host-accessible memory (refer to section 1.6.17) and the controller ... The value is in units of the minimum memory page size (CAP.MPSMIN) and is reported as a power of two (2^n).
Identify – Identify Namespace Data Structure, NVM Command Set Specific
Namespace Optimal I/O Boundary (NOIOB):
This field indicates the optimal I/O boundary for this namespace. This field is specified in logical blocks. The host should construct Read and Write commands that do not cross the I/O boundary to achieve optimal performance.
Namespace Optimal Write Size (NOWS):
This field indicates the size in logical blocks for optimal write performance for this namespace.
Namespace Preferred Write Granularity (NPWG):
This field indicates the smallest recommended write granularity in logical blocks for this namespace.
Namespace Preferred Write Alignment (NPWA):
This field indicates the recommended write alignment in logical blocks for this namespace.
Namespace Preferred Deallocate Granularity (NPDG):
This field indicates the recommended granularity in logical blocks for the Dataset Management command...
Namespace Preferred Deallocate Alignment (NPDA):
This field indicates the recommended alignment in logical blocks for the Dataset Management command...