硬盘上的随机读/写非常慢

rcs*_*rcs 12 performance hard-drive

我有一个大约 8 岁的笔记本电脑硬盘。感觉硬盘很慢,很多情况下,我在登录后和打开应用程序等操作时发现Windows任务管理器中的“活动时间”为100%。我做了一个基准测试,这是结果。

在此处输入图片说明

顺序读取的速度很好,大约为 70MB/s,但在进行随机 R/W 时,它下降到小于 1MB/s。这是正常的吗?还是由于某些组件损坏/磨损?

硬盘规格:

Western Digital WD5000LPVT 500GB SATA Hard Drive 
Capacity: 500GB.
Speed: 5,400RPM. 
Interface Types: SATA. 
Form Factor: 2.5inx7mm Fits
All laptops. Sector Size: 512 / 512e. 
Sustained Throughput: 147.
Electrical Interface: SATA 300 - 3.0Gbps. 
On-Board Cache: 8MB.
Run Code Online (Sandbox Code Playgroud)

[编辑]:上传 CrystalDiskInfo 结果

在此处输入图片说明

碎片化 (0%) 在此处输入图片说明

预取/超取 在此处输入图片说明

Gor*_*bić 48

这对于 5400 rpm 磁盘上的随机 I/O 性能来说是完全正常的。一个 5400 rpm 的磁盘可以管理大约 90 IOPS,因为所需的扇区每秒只能在磁头下方移动 90 次(每分钟 5400 次)。

所以对于 4KB 块,即 4KB * 90 = 360KB/s。

这与您所看到的大致相符。

  • @user253751 随机块写入的等价物是对服务器的随机请求,这意味着客户端和服务器之间的往返延迟(充其量,如果连接已经建立,并且需要单次往返)旅行的请求)。它至少需要与 ping 一样多的时间。如果它是流的一部分(更长的下载),您就不必等待往返,这相当于磁盘上的顺序性能。 (16认同)
  • 对于 4KB 块中的随机 I/O,下载到 Internet 通常会更慢。90 IOPS 是每次操作约 11 毫秒。对 Internet 存储服务器的 Ping 时间通常比宽带连接高 2-3 倍。 (8认同)
  • *一个 5400 rpm 的磁盘可以管理大约 90 IOPS* 这似乎很乐观。您还需要考虑寻道时间。IME 一个 5400 rpm 的磁盘将更有可能能够做到 50-60 IOPS 给定真正的随机 IO。 (5认同)
  • 因此,将数据上传/下载到 Internet 实际上可能比本地 HDD 更快?这很烦人。 (4认同)
  • @ user253751 你在队列深度 1 处做。 (3认同)
  • @user253751我认为你的论点可以归结为网络对随机读/写的类比。任何类比都不可能没有一两个缺陷。 (2认同)
  • @jcaron:我不同意:操作系统可能会向 HDD 发送大量命令,然后 HDD 可以从缓存中回答或转过头。因此,对于云比较,我会向 Internet 服务器发送大量命令,并且响应可能比从磁盘更快。 (2认同)
  • @AndrewHenle,但如果它是随机的,那么平均它只需要旋转半圈,所以不要忘记也考虑到这一点 (2认同)
  • @ThomasWeller 从 Steam 下载游戏时,我的(80% 满)英特尔 660p NVMe 驱动器的速度限制了我……这是在 300 Mbps 的下行链路上。 (2认同)

gro*_*taj 20

您的硬盘是 WD5000LPVT,2.5" 500GB 5400rpm 型号。

查看UserBenchmark您的结果并没有异常。随机读取结果应该在 0.1-0.5 MB/s 之间,你的已经很不错了。UserBenchmark 随机写入为 0.76-2.3 MB/s,您的 ~0.85 偏低但未超出范围。

对于此磁盘模型,这些值似乎是正常的。HDD 通常有很糟糕的随机访问结果,尤其是 5400rpm 的。


jca*_*ron 12

硬盘驱动器由以指定速度转动的盘片和沿盘片半径移动的读写磁头组成。

要读取磁盘上的随机块,需要做两件事:

  • 磁头需要沿着盘片半径(寻道时间)移动到正确的“轨道” 。

  • 盘片需要旋转,直到正确的“扇区”或块位于读/写头下方(旋转延迟)。

平均随机寻道时间通常在 9 到 15 毫秒之间,具体取决于磁盘。对于这个特定的磁盘,它是12 ms

平均随机旋转延迟直接取决于驱动器旋转速度。磁盘有多种速度,从 5400 RPM(每分钟转数),这是小型消费 2.5" 磁盘的标准,到高端企业级磁盘的 15000 RPM。

在 5400 RPM(即每秒 90 转)下,正确的块平均需要5.6 毫秒才能进入读写头。

这意味着平均而言,读取一个随机块需要17.6 毫秒(不包括命令处理和数据传输本身,但相比之下,这通常是花生)。

这又意味着每秒读取次数低于57 次。基准测试使用的4K 块为 228 KB/s,或0.228 MB/s。所以基准测试的结果实际上比理论略好!

这是RND4K Q1T1读取测试(第一个屏幕截图的左下角),这是最终的随机读取测试,每次读取都会等待其结果,然后再进行下一次读取。

Q32T1测试利用排队:在等待结果之前将多个读取命令(最多 32 个)发送到驱动器(并且一旦结果返回,就会请求新的读取,维护一个包含 32 个待处理读取的队列)。

这使驱动器能够对读取重新排序,从而减少随机性。例如,从磁道 1 到磁道 2 的寻道时间比从第一个到最后一个更短,因此在递增的磁道上对读取进行排序可以节省时间。如果从同一磁道读取多个块(无需查找,您可以读取读/写头下的第一个块),这也有帮助。

写测试通常有缺陷,因为磁盘会缓存写入并说“是的,我知道了”,即使它尚未写入磁盘,因此要准确判断它们要困难得多。

所以:

  • 您的磁盘似乎在规格范围内运行
  • 您的磁盘与所有消费级笔记本电脑硬盘一样,速度很慢。这里并不奇怪。
  • 如果您想要更好的搜索(随机)性能,没有什么比 SSD 更好的了。


归档时间:

查看次数:

9844 次

最近记录:

4 年,11 月 前