答案1
这个问题有点宽泛,不太清楚。我对你提到的这个“fio”工具不太熟悉,快速浏览一下其网页 没有透露有关其工作原理的任何细节(即什么是否正在测量)。
- 正如 duDE 所说,原则上,寻道时间(将 I/O 磁头从其所在磁柱移动到要执行 I/O 操作的磁柱所需的时间)应该与要在目标磁柱上执行的操作无关。我认为磁盘驱动程序通常会发出两个单独的命令(寻道然后读取,或寻道然后写入),因此磁盘甚至不知道 无论是寻求读取还是寻求写入。
但是,正如我在第一段中所说,我不知道“fio”测量的是什么。我不知道程序如何在没有内核探测器的情况下测量实际寻道时间。它可能在 API 级别测量 I/O 操作的时间。
- 即使在硬件层面,写入操作也可能会自动跟随相同数据的读取,以验证正确性。
- 在硬件层面,如果您有冗余存储(如 RAID),其中相同的数据保存在两个或多个独立驱动器上,通常一个驱动器上的 I/O 磁头会停留在低编号的磁柱(例如,0.25×MAXCYL),而另一个驱动器上的 I/O 磁头会停留在高编号的磁柱(例如,0.75×MAXCYL)。读取操作将转到磁头更靠近目标磁柱的驱动器,因此它最多需要寻道 0.25×MAXCYL,而写入操作将转到两个驱动器,因此它可能需要寻道最多 0.75×MAXCYL。
在操作系统/文件系统级别,
- 读取可能会或可能不会更新文件的访问时间。有些系统会完全禁用此功能。其他系统可能只设置一个标志(例如,在相关的内存驻留 inode 或等效物中)表示文件已被读取;磁盘驻留 inode 可能要过一段时间才会更新(异步)。
写
- 很可能需要更新文件的修改时间。
- 如果你是延伸文件(而不仅仅是覆盖数据靠近结束)
- 需要更改文件大小(即在 inode 中),并且
- 可能需要从空闲列表(或等效列表)中分配块,
而且可能无法推迟这些活动。
- 如果你使用旧文件进行测试,并且自创建文件以来已经对磁盘进行了碎片整理,但此后又扩展了文件(即使你没有扩展文件在在这些测试中),可能文件的开头存储在连续的区域,而文件的结尾不是。但我能看到的唯一含义是访问文件的开头可能比访问结尾更快。我不明白这如何导致读取和写入之间的差异。
答案2
恕我直言,只有一个寻道时间:
寻道时间是硬盘控制器定位特定存储数据所需的时间。其他延迟包括传输时间(数据速率)和旋转延迟(等待时间)。
当磁盘驱动器读取或写入任何内容时,磁盘的读写头需要移动到正确的位置。磁盘读写头的实际物理定位称为寻道。磁盘的读/写头从磁盘的一个部分移动到另一部分所需的时间称为寻道时间。