我在使用西部数据硬盘时遇到了一个奇怪的问题。
该驱动器的性能随时间变化很大。观察到的范围从约 50MB/s 到超过 100 MB/s。性能在几分钟(甚至几小时)内或多或少保持稳定,但随后突然下降/上升。性能是使用dd
,反复将相对较大的文件(50 MB 到 10 GB)写入ext4
HDD 上的文件系统(并在下次运行性能测试时将其覆盖)。这可以在图中更好地直观显示。
我确实期望会有一些变化,并且我还期望性能可能以某种方式取决于文件大小(显然确实如此,如链接图像所示)。但我对这些性能的飞跃感到非常惊讶。
我的问题:
- 这是由操作系统/文件系统引起的吗?
- 这是不是硬件层的问题,是不是硬盘控制器出了什么问题,导致行为异常?
- 这可能与磁盘上的块/扇区的排列有关吗?
环境详情:
- 英特尔酷睿 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 相比非常高,因此分散的读取和/或写入可能会不成比例地减慢写入速度。