如何确定 960 PRO M.2 的最佳块大小是多少?

Her*_*ith -1 linux unix filesystems read-write sectors

我有一个三星 NVMe SSD 960 PRO M.2。

我正在其上安装 Gentoo。gparted通知我物理块大小与内核报告的不同。我以为通知是针对 M.2 SSD 的,所以我曾经dd在通知中为物理块大小写零。原来是我的USB驱动器。

我想知道设备开箱即用的块大小是多少。我知道无论我给它什么,它都会起作用,但我希望它能够持续下去。

Kam*_*ski 5

注意:这个社区维基实际上是 OP 的答案,最初是作为对问题的编辑发布的。


我只是做了很多研究来得到我的答案,这使我直到现在才安装我的操作系统。存储在不同块大小中的内容有很多。对于不同的块大小,不同的硬件架构处理不同数量的晶体管,彼此不同。

我进行了一系列测试。以下是我询问的设备的结果:

中值速度:

      bs =  write speed
     512 = 552 MB/s
    1024 = 783 MB/s
    2048 = 1.4 GB/s
    4096 = 2.0 GB/s
    8192 = 2.3 GB/s
   16384 = 1.7 GB/s
   32768 = 2.5 GB/s
   65536 = 2.6 GB/s // <=== Max Write Speed
  131072 = 2.6 GB/s
  262144 = 2.5 GB/s
  524288 = 2.5 GB/s
 1048576 = 1.7 GB/s
 2097152 = 2.5 GB/s
 4194304 = 2.2 GB/s
 8388608 = 1.9 GB/s
16777216 = 1.9 GB/s
33554432 = 1.8 GB/s
67108864 = 1.7 GB/s
Run Code Online (Sandbox Code Playgroud)

中值速度:

      bs =  read speed
     512 = 682 MB/s
    1024 = 1.2 GB/s
    2048 = 1.8 GB/s
    4096 = 2.9 GB/s
    8192 = 2.9 GB/s
   16384 = 3.3 GB/s
   32768 = 3.4 GB/s
   65536 = 3.6 GB/s // <=== Almost max read spead
  131072 = 1.7 GB/s
  262144 = 3.6 GB/s
  524288 = 3.7 GB/s
 1048576 = 3.6 GB/s
 2097152 = 3.6 GB/s
 4194304 = 3.3 GB/s
 8388608 = 3.1 GB/s
16777216 = 1.8 GB/s
33554432 = 2.7 GB/s
67108864 = 2.5 GB/s
Run Code Online (Sandbox Code Playgroud)

我用计算器来计算中位数。在 Arch Linux 中,我每次读取运行 8 个测试,每次写入运行 8 个测试。在 USB 上运行的 Linux 发行版的测试不太准确。运行 GUI 的 Linux 发行版的测试不太准确。由于设备电路的 I/O 增加,在被测试的同一驱动器上运行的 Linux 发行版的测试也不太准确。

最好的结果是通过外部 USB 3.0 连接的 SanDisk Extreme 和 Arch Linux 安装 ISO 获得的。这是因为在我尝试过的所有其他方式中,有几个块大小的速度都达到了限制,这使得无法确定用于该设备的最佳速度是多少。许多块大小一直以相同的速度进行测试,操作系统在拇指驱动器上运行时为 1.7 GB/s,在被测试驱动器上运行时为 1.8 GB/s。

速度告诉我设备如何处理存储在每个块的页面中的信息。

其中四个测试是使用 ext4 文件系统运行的。其他四项测试是在驱动器包含零的情况下运行的。对于这两个集合,前两个测试是使用 512B 块大小的驱动器。这两个集合的后两个测试是使用 4096B 块大小的设备。

所以,答案是 65536B。