为什么采用 ext4 的硬盘性能会随着时间而变化?

为什么采用 ext4 的硬盘性能会随着时间而变化?

我在使用西部数据硬盘时遇到了一个奇怪的问题。

该驱动器的性能随时间变化很大。观察到的范围从约 50MB/s 到超过 100 MB/s。性能在几分钟(甚至几小时)内或多或少保持稳定,但随后突然下降/上升。性能是使用dd,反复将相对较大的文件(50 MB 到 10 GB)写入ext4HDD 上的文件系统(并在下次运行性能测试时将其覆盖)。这可以在图中更好地直观显示。

吞吐量随时间变化的图表

我确实期望会有一些变化,并且我还期望性能可能以某种方式取决于文件大小(显然确实如此,如链接图像所示)。但我对这些性能的飞跃感到非常惊讶。

我的问题:

  • 这是由操作系统/文件系统引起的吗?
  • 这是不是硬件层的问题,是不是硬盘控制器出了什么问题,导致行为异常?
  • 这可能与磁盘上的块/扇区的排列有关吗?

环境详情:

  • 英特尔酷睿 i5-8365UE
  • Ubuntu 22.04
  • 1TB HDD 格式化ext4(默认设置,整个驱动器只有一个分区),HDD 型号:WDC WD10JUCT-63CYNY0
  • 分区有 75% 的可用空间,因此应该有足够的空间来避免文件碎片
  • 用于测试吞吐量的命令dd bs=1MB count=$cnt if=/dev/zero of=/path/to/file/on/ext4partition conv=fdatasync$cnt从 50 到 10000 不等。我使用大尺寸来确保磁盘缓存不会发挥很大的作用。conv=fdatasync据我所知,确保所有内容都同步到磁盘,因此操作系统缓存也不会产生很大的影响。
  • 在实验期间,没有其他进程写入或读取该驱动器(系统分区位于单独的设备(SSD)上)。

答案1

我不确定是否有一个单一的答案,但我预计会发生几件事。

  • 硬盘上外层磁道的速度大约是内层磁道的两倍。

  • 文件碎片意味着写入操作可能会分散在驱动器上。

  • 操作系统和磁盘缓存可能会起到一点作用。

  • 其他磁盘活动可能会显著影响速度。(HDD 不仅在速度方面比 SSD 慢,而且 IOP(类似于 ping)与 SSD 相比非常高,因此分散的读取和/或写入可能会不成比例地减慢写入速度。

相关内容