写入硬盘的时间

时间:2013-12-11 14:00:25

标签: hardware hard-drive

我意识到这个数字会根据很多因素而改变,但一般来说,当我将数据写入硬盘驱动器(例如复制文件)时,将数据实际写入盘片需要多长时间? Windows说复制完成了吗?

有人能指出我正确的方向来发现有关这个主题的更多信息吗?

2 个答案:

答案 0 :(得分:2)

如果你正在寻找一个难以理解的数字,这几乎是不可知的。通常,数据启动到达磁盘盘片的数量级为几十到几百毫秒,但在具有RAID和重复数据删除功能的大型服务器磁盘阵列中可能高达几秒钟

事件的流程就是这样的。

  1. 应用程序调用类似fwrite()的函数。
  2. 此调用由操作系统中的文件系统层处理,该文件系统层必须确定要操作的特定磁盘扇区。
  3. 操作系统中的SATA / IDE驱动程序将与硬盘驱动器控制器硬件通信。在现代PC上,它通常使用DMA将数据提供给磁盘。
  4. 数据位于硬盘(RAM)内的写缓存中。
  5. 当物理盘片和头部进入位置时,它会开始将缓存内容传输到盘片上。
  6. 步骤3-6可能会重复多次,具体取决于要写入的数据量,磁盘上的数据写入位置。此外,通常必须更新文件系统元数据(例如,可用空间计数器),这将触发更多磁盘写入。
  7. 由于任务调度,后台线程以及您的磁盘写入可能与几十个其他进程排队,因此在Windows等通用操作系统中,步骤1-3所需的时间可能无法预测。我会说它通常在典型的PC上大约10-100毫秒。如果转到Windows资源监视器并单击“磁盘”选项卡,则可以了解平均磁盘队列长度。您可以使用性能监视器生成更精细控制的图形。

    步骤3-4主要由磁盘控制器和磁盘接口(SATA,SAS等)控制。在服务器领域,您可以谈论使用FC或iSCSI网络交换机的SAN,这会产生自己的延迟。

    步骤5将由它们的磁盘物理性能控制。许多消费级硬盘制造商不再发布平均寻道时间,但通常需要10-20毫秒。

    关于第5步的有趣细节:有些硬盘驱动器会使用刷新缓存以获得更好的基准测试分数。

    第6步将取决于您的文件系统以及您正在编写的数据量。

答案 1 :(得分:1)

你说得对,表明数据写入完成和实际写入的最后数据之间可能存在延迟。需要考虑的事项是:

  1. 设备管理器,磁盘驱动器,属性,策略 - 禁用写入缓存的选项。

  2. 您可能最好使用直接I / O,以便Windows不会将其暂时保存在文件缓存中。

  3. 如果您的程序写入数据,您可以记录已复制的内容。

  4. 如果您通过网络发送数据,则可能无法控制远程系统何时完成。

  5. 要查看发生的情况,您可以设置Perfmon日志记录。我的一个监控示例:

  6. http://www.roylongbottom.org.uk/monitor1.htm#anchor2