我正在嘗試將 200GB 檔案從 NFS 掛載複製到本地磁碟。本機磁碟是 RAID 5 系統(硬體 RAID 控制器)之上的 LVM 上的 XFS 檔案系統。
我用來rsync
監控傳輸速度。一開始IO速度約200MB/s,前18GB穩定。但隨後效能會下降 10-20 倍,並且永遠不會恢復到初始速度。有時它會達到大約 50-100MB/s,但只持續幾秒鐘,然後過程似乎會掛起一會兒。
同時,目標檔案系統上的所有 file-stat 操作都會阻塞很長一段時間(分鐘)。此外,中斷複製過程會阻塞幾分鐘。隨後刪除部分複製的檔案也需要幾分鐘的時間。
有什麼想法可能導致這種情況嗎?
答案1
感謝jet的評論,我研究了Linux下磁碟IO的快取。事實證明,由於系統有大量幾乎空閒的 RAM (48GB),因此大量用於 I/O 快取。
我監視 /proc/meminfo 並查找欄位「髒」(髒 I/O 快取頁)和「寫回」(將髒頁寫入磁碟)。
watch -n1 -- "grep -E Dirty|Writeback /proc/meminfo"
iostat
顯示 Dirty 增加到大約 18GB,然後再次下降,而 Writeback 增加,一旦寫入 Dirty 頁,它就會再次增長等。時減少寫入磁碟的資料。寫入速度約為15MB/s。
因此,前 18GB 寫入快取的速度很快,但是當實際寫入發生時,速度會變慢,並且在寫入磁碟時,I/O 會飽和並阻塞,直到所有髒頁都傳送到磁碟。