我知道这个数字会根据很多因素而改变,但一般来说,当我将数据写入硬盘驱动器(例如复制文件)时,需要多长时间才能使数据实际存在在Windows说复制完成后写到盘子上?写入硬盘驱动器的时间
任何人都可以指出我在正确的方向发现更多关于这个话题?
我知道这个数字会根据很多因素而改变,但一般来说,当我将数据写入硬盘驱动器(例如复制文件)时,需要多长时间才能使数据实际存在在Windows说复制完成后写到盘子上?写入硬盘驱动器的时间
任何人都可以指出我在正确的方向发现更多关于这个话题?
如果您正在寻找一个硬数字,这是非常不可知的。通常,到开始到达磁盘盘片的数据的数量级别从几十到几百毫秒,但在具有RAID和重复数据删除的大型服务器磁盘阵列中可以高达几秒钟。
事件的流程就像这样。
由于任务调度,后台线程以及您的磁盘写入可能在几十个其他进程中排队,所以步骤1-3所需的时间在Windows等通用操作系统中可能无法预知。我认为它通常在典型的PC上大约为10-100毫秒。如果您转到Windows资源监视器并单击“磁盘”选项卡,则可以了解平均磁盘队列长度。您可以使用性能监视器来生成更精细的控制图。
步骤3-4主要由磁盘控制器和磁盘接口(SATA,SAS等)控制。在服务器领域,您可以谈论使用FC或iSCSI网络交换机的SAN,这会强制延迟。
第5步将受磁盘物理性能的控制。许多消费级硬盘制造商不再发布平均寻道时间,但10-20毫秒是常见的。
关于第5步的有趣的细节:一些硬盘驱动器说谎刷新他们的写缓存,以获得更好的基准分数。
第6步将取决于你的文件系统和你写的数据量。
你说得对,Windows之间可能存在延迟,表示数据写入已完成,而最后的数据实际写入。需要考虑的事项有:
设备管理器,磁盘驱动器,属性,策略 - 用于禁用写入缓存的选项。
你可能会更好使用直接I/O,以便Windows暂时不将其保存在文件缓存。
如果你的程序写入的数据,你可以记录哪些已经被复制。
如果您通过网络发送数据时,你可能没有当远程系统已完成的控制。
要看看发生了什么,你可以设置性能监视器记录。我的一个监测的例子:
什么让你觉得窗户说,数据被写入之前已完成?只是好奇,我会假设Windows并没有告诉你它已经完成,直到硬盘发出完成信号。 – Tobberoth
@Tobberoth:错误的假设 –
你为什么想知道?换句话说,你会使用这些信息来做什么?如果明年的答案发生了变化呢? –