我正在 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(所有作业):
阅读:io=20480MB,聚合=281670KB/秒,minb=281670KB/s,maxb=281670KB/s,mint=744454msec,maxt=74454msec
磁盘统计信息(读/写):
nvme0n1:ios = 326821/8,合并= 0/0,刻度= 582640/0,in_queue = 582370,util = 99.93%
我尝试格式化如下:
mkfs.xfs -f -s size=4096 /dev/nvme0n1
那么值为:
运行状态组 0(所有作业):
阅读:io=20480MB,聚合=781149KB/s,minb=781149KB/s,maxb=781149KB/s,mint=266
847 毫秒,最大值=26847 毫秒
磁盘星数(读/写):nvme0n1:ios=326748/7,merge=0/0,ticks=200270/0,in_queue=200350,util=99.51%
我发现与使用时没有性能下降
- 4k页面大小
- 任何小于 64k 的 fio 块大小
- 使用具有默认配置的 ext4 fs
可能是什么问题?这是任何对齐问题吗?我在这里缺少什么?任何帮助表示赞赏
问题是您的 SSD 的本机扇区大小为 4K。因此,文件系统的块大小应设置为匹配,以便读取和写入在扇区边界上对齐。否则,您将拥有跨越 2 个扇区的块,因此需要 2 个扇区读取才能返回 1 个块(而不是 1 次读取)。
如果您有英特尔 SSD,较新的 SSD 具有可变扇区大小,您可以使用其英特尔固态硬盘数据中心工具进行设置。但老实说,无论如何,4096 仍然可能是驱动器的真实扇区大小,使用它并设置文件系统来匹配您将获得最一致的性能。
在 Linux 上的 ZFS 上,4K 块的设置为 ashift=12。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)