Intel NVMe 驱动器性能下降,xfs 文件系统的扇区大小不是 4096

Chr*_*cob 4 linux solid-state-drive ext4 xfs pci-e

我正在 linux(Ubuntu 14.04)上使用 NVMe 卡。我发现在使用默认扇区大小 (512) 的 xfs 文件系统格式化时,Intel NVMe 卡的性能有所下降。或任何其他小于 4096 的扇区大小。

在实验中,我使用带有默认选项的 xfs 文件系统格式化了卡。我尝试在具有 64k 页大小的 arm64 平台上运行具有 64k 块大小的 fio。这是使用的命令 fio --rw=randread --bs=64k --ioengine=libaio --iodepth=8 --direct=1 --group_reporting --name=Write_64k_1 --numjobs=1 --runtime=120 --filename=new --size=20G

我只能得到以下值

运行状态组 0(所有作业): READ: io=20480MB, aggrb=281670KB/s , minb=281670KB/s, m​​axb=281670KB/s, m​​int=744454msec, maxt=74454msec 磁盘统计信息(读/写):nvmen1: ios=326821/8,merge=0/0,ticks=582640/0,in_queue=582370,util=99.93%

我尝试格式化如下:

mkfs.xfs -f -s size=4096 /dev/nvme0n1
Run Code Online (Sandbox Code Playgroud)

那么这些值是:

运行状态组 0(所有作业): READ: io=20480MB, aggrb=781149KB/s , minb=781149KB/s, m​​axb=781149KB/s, m​​int=266 847msec, maxt=26847msec Disk stats (read/write) : ios=326748/7, 合并=0/0, 滴答=200270/0, in_queue=200350, util=99.51%

我发现使用时没有性能下降

  • 4k 页面大小
  • 任何小于 64k 的 fio 块大小
  • 使用带有默认配置的 ext4 fs

可能是什么问题?这是任何对齐问题吗?我在这里缺少什么?任何帮助表示赞赏

jas*_*ams 5

问题是您的 SSD 的本机扇区大小是 4K。因此,您的文件系统的块大小应设置为匹配,以便读取和写入在扇区边界上对齐。否则,您将拥有跨越 2 个扇区的块,因此需要 2 个扇区读取才能返回 1 个块(而不是 1 个读取)。

如果您有英特尔固态硬盘,则较新的固态硬盘具有可变扇区大小,您可以使用其英特尔固态硬盘数据中心工具进行设置。但老实说,无论如何,4096 仍然可能是驱动器的真实扇区大小,使用它并设置文件系统匹配,您将获得最一致的性能。

在 Linux 上的 ZFS 上,4K 块的设置为 ashift=12。