Linux FAT 文件系統(tǒng)預(yù)讀缺陷:補(bǔ)丁提升 7 倍性能
Linux 內(nèi)核現(xiàn)在已經(jīng)增加了對(duì) exFAT 的支持,同時(shí)它也沒有放棄維護(hù)原有 FAT 文件系統(tǒng)驅(qū)動(dòng),甚至現(xiàn)在從郵件列表上看,F(xiàn)AT 性能方面可能會(huì)有大幅提升。
開發(fā) Tux3 文件系統(tǒng)而聞名的 OGAWA Hirofumi 在郵件列表中提到了目前 Linux FAT 文件系統(tǒng)的預(yù)讀取處理有瑕疵:“FAT 條目的當(dāng)前預(yù)讀非常簡單,但是有一些缺陷,因此在某些環(huán)境下效果不佳。這個(gè)補(bǔ)丁或多或少可以提高預(yù)讀能力。”
補(bǔ)丁改進(jìn)的關(guān)鍵點(diǎn)在于:
通過 bdi->a_pages 使預(yù)讀大小可調(diào)
關(guān)注 bdi->io_pages 以避免小型 I/O 請(qǐng)求
在完全耗盡之前更新預(yù)讀窗口
OGAWA Hirofumi 測試結(jié)果表明,使用此補(bǔ)丁,在慢速 USB 連接的 2TB 硬盤上,此前需要 383 秒才能完成的傳輸測試現(xiàn)在只需 51 秒即可完成。
具體補(bǔ)丁代碼可以查看:[PATCH resend] fat: Improve the readahead for FAT entries