我使用Intel SSD数据中心工具检查了我的NVMe信息,如下所示:
- Intel Optane(TM) SSD DC P4800X FUKS7175003R375AGN -
...
Bootloader : EB3B0213
DevicePath : /dev/nvme0n1
DeviceStatus : Healthy
Firmware : E2010211
IntelNVMe : True
LBAFormat : 0
NativeMaxLBA : 732585167
NumErrorLogPageEntries : 63
NumLBAFormats : 6
PhySpeed : The selected drive does not support this feature.
PhysicalSectorSize : The selected drive does not support this feature.
PhysicalSize : 375083606016
PowerGovernorAveragePower : The desired feature is not supported.
...
SMBusAddress : 256
SectorSize : 512
SerialNumber : FUKS7175003R375AGN
TCGSupported : False
...
如你所见,SectorSize = 512。但是,当我使用 fio 进行测试时,使用的速度blocksize=4096
比要快得多blocksize=512
。我知道 SSD 中的页面需要先擦除才能再次写入,但这里 512 应该与页面完全相同,因此应该很快,为什么会这样?
答案1
对于 SSD,呈现给上层的块大小远不及擦除页面大小,但 4096 字节比 512 字节更接近擦除页面大小。此外,如果您以 4096 字节而不是 512 字节的“块”发送数据,那么对于相同的总 I/O,所有工作要做的工作都更少,并且 I/O 将更频繁地与页面大小对齐。事实上,您可能会发现使用 64k 块大小时速度会更快 - 最小块大小与最佳块大小不同!请参阅http://codecapsule.com/2014/02/12/coding-for-ssds-part-2-architecture-of-an-ssd-and-benchmarking/(特别是有关 NAND 闪存页面和块的部分)和http://codecapsule.com/2014/02/12/coding-for-ssds-part-3-pages-blocks-and-the-flash-translation-layer/了解详情。