我目前正在对硬盘进行基准测试。我使用 HW32 进行测量。
结果分为两部分:
random seek time: 20 ms
random read throughput: 30 Mbytes/s
我不确定 HW32 采用什么方法进行基准测试。
但我发现随机寻道时间结果非常奇怪。
据我了解,随机寻道时间意味着the time that is spent on where a specific data is
。所以我推测random read
应该包含许多次random seek
,对吗?
例如,我尝试从磁盘读取 100MB 的数据。由于磁盘碎片,磁盘上有 1000 个随机块,每个块有 100KB 的数据。所以当我读取它时,磁盘头必须移动 1000 次才能找到所有的数据块,对吗?
那么如果random seek time is 20ms
,是否意味着我们必须花费 1000 * 20 = 20,000ms = 20 秒进行随机搜索?我想不是吧?
有人能给我解释一下吗?如果像 HW32 这样的基准测试告诉我random seek time = 20 ms
,那是什么意思?那是否total random seek time for a random read
意味着average seek time
?
谢谢
答案1
随机寻道时间是磁盘到达数据所在位置并读取单个块(甚至单个扇区)所需的平均时间。实际值可能远高于或低于该值。
对于随机读取速率,通常在同一位置读取多个块来计算平均值,因此该速率取决于寻道时间和驱动器的线性读取吞吐量。
现代磁盘甚至可以通过一种称为本机命令队列这使得他们可以重新提出请求以尽量减少头部运动。
答案2
您假设系统会以随机顺序寻找随机块。但它永远不会这么做。
如果你要在一家随机选择的商店买东西,你平均需要花两个小时开车到那家商店,取东西,然后开车回来。但如果你必须开车去 1,000 家随机选择的商店,你不会在每家商店花两个小时,因为你会选择最佳顺序。有些商店会紧挨着。等等。
答案3
您的数字有点奇怪。平均延迟 20ms 意味着每秒 50 次 IO,而为了使这 50 次 IO 总计达到 30MB,您必须使用异常大的扇区大小。他们报告的是峰值而不是平均值,这有可能吗?
答案4
对于消费级驱动器来说,20ms 根本不是一个不寻常的值。