小檔案 vs 大檔案 / TR-004

為什麼在移動或複製大量非常小的檔案時,傳輸速度會比移動或複製少量大型檔案時大幅下降?

檔案傳輸速度通常對於大檔案來說比小檔案更快,因為傳輸更多資料需要較長的時間。然而,傳輸許多小檔案的速度甚至可能比傳輸幾個總大小相同的大檔案還要慢。這是因為作業系統(OS)在每個小檔案上需要花更多時間執行操作,例如尋找、開啟和關閉檔案。

想像一下,你需要搬運一個大型箱子。

你只需要彎下身一次,將它拾起,搬到目的地,然後放下,整個任務就一次完成。

但如果你要搬運多個較小的箱子,即使總重量與大型箱子相同,你也必須多次重複彎下身、拾起和放下的動作。

這些重複的動作會增加額外的時間,導致整體流程變慢,完成任務所需的總時間也會更長。

這是所有作業系統自發明以來的典型行為。任何作業系統在管理檔案的結構、權限、屬性等,以及開啟和關閉資料流和其他功能時,都會產生相當多的額外負擔。

當處理小型檔案時,「管理」功能往往比實際讀取/寫入資料更耗費資源。

這是典型的行為,硬碟在執行大量非連續讀寫時會花更長時間。問題出在硬碟,而不是網路速度。

這就是為什麼像分層(Tiering)這樣的功能被發明出來的原因。
檔案會暫時放在較快的位置(RAM/SSD),以加快作業完成速度。當系統閒置且沒有 I/O 需求時,暫存空間中的內容可以在背景中寫入磁碟。

然而,這個技巧在以下情況可能無效:

  1. 檔案太大,超過快取可用空間。為了防止資料遺失,內容會被強制寫入磁碟。
  2. 某些應用程式持續寫入(如監控錄影),讓磁碟 I/O 沒有「休息」的機會。

所以,仍然要視情境而定。但一般來說,處理較小的檔案仍然比處理大型檔案更耗時。