1

I just noticed a Maximum Data Transfer Size spec on both my NVMe SSDs (128 pages in one case, and 64 pages in another). What exactly is this ? Is it the same as EBS (Erase Block Size, see Is partition alignment to SSD erase block size pointless? or https://en.wikipedia.org/wiki/Flash_memory#NAND_memories) ?

# smartctl -c /dev/nvme0n1
(...)
Maximum Data Transfer Size:         128 Pages
(...)

smartctl -c /dev/nvme1n1

(...) Maximum Data Transfer Size: 64 Pages (...)

1 Answers1

2

From the NVM Express specification:

Maximum Data Transfer Size (MDTS): This field indicates the maximum data transfer size for a command that transfers data between memory accessible by the host (e.g., host memory, Controller Memory Buffer (refer to section 4.7)) and the controller. The host should not submit a command that exceeds this maximum data transfer size. If a command is submitted that exceeds this transfer size, then the command is aborted with a status of Invalid Field in Command. The value is in units of the minimum memory page size (CAP.MPSMIN) and is reported as a power of two (2^n). A value of 0h indicates that there is no maximum data transfer size.

To clarify, it's the amount of data that can be sent from the host to the storage device at once. It has no bearing on anything else (including the structure of the underlying flash, presented block size, etc...)


If you're keen to calculate the actual size, you need to locate the value of MPSMIN using the nvme utility.

For example, the following SSD supports a MDTS of 2MiB.

$ nvme show-regs -H /dev/nvme0 | grep MPSMIN
        Memory Page Size Minimum         (MPSMIN): 4096 bytes
$ smartctl -c /dev/nvme0 | grep 'Maximum Data Transfer Size'
Maximum Data Transfer Size:         512 Pages
Attie
  • 20,734