我知道這個數字會根據很多因素而改變,但一般來說,當我將數據寫入硬盤驅動器(例如複製文件)時,需要多長時間才能使數據實際存在在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:錯誤的假設 –
你爲什麼想知道?換句話說,你會使用這些信息來做什麼?如果明年的答案發生了變化呢? –