
我在網路檔案系統中寫入了很多檔案;它以目錄結構編寫,目錄結構中的每個葉目錄都有幾個(大約一千個)檔案。包含相關文件的目錄結構部分非常平坦。
如果我運行 ls 或 mkdir foo,相應的操作需要很長時間(大約 10 分鐘)。
為什麼會發生這種情況?如何以更省時的方式運行 ls 或 mkdir 等操作?
答案1
您使用的是網路檔案系統,因此您的速度可能受到網路而不是磁碟的限制。
當您運行時ls
,基本操作是讀入所有文件,對它們進行排序,然後列印出來。這意味著每個ls
人都需要讀取數千個文件條目。快取可以提供幫助,但它仍然是一個緩慢的過程。
同樣,當您運行mkdir
需要檢查的目錄時,請確保您還沒有獲得該目錄。
解決方案是減少每個目錄的檔案數量,使結構又窄又深而不是淺而寬。