(資料圖)
Ted Ts"o為L(zhǎng)inux 6.5的合并窗口提交了有關(guān)EXT4的功能變化。EXT4在這一輪升級(jí)中帶來(lái)了各種清理、錯(cuò)誤修復(fù)和其他增強(qiáng)功能,但有一項(xiàng)性能優(yōu)化值得關(guān)注。EXT4與Linux 6.5合并后,圍繞并行直接I/O(DIO)覆蓋的性能將有很大的改善。Red Hat公司的Brian Foster從事這項(xiàng)優(yōu)化工作,允許同時(shí)進(jìn)行不對(duì)齊的DIO覆蓋,結(jié)果看到了更好的性能。
通過(guò)FIO這個(gè)補(bǔ)丁,他的測(cè)試案例從8724 KiB/s提高到1565 MiB/s。
獲取補(bǔ)?。?/strong>
https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git/commit/?h=dev&id=310ee0902b8d9d0a13a5a13e94688a5863fa29c2
Foster在補(bǔ)丁中解釋說(shuō):
"我們有報(bào)告說(shuō),由于ext4中增加了排他性限制,子塊(無(wú)對(duì)齊)直接寫入的性能明顯下降。對(duì)不對(duì)齊直接寫入的排他性要求的目的是為了避免iomap dio層中未序列化的部分塊清零在重疊寫入中造成的數(shù)據(jù)損壞。
XFS由于同樣的基本原因也有類似的要求,但卻沒(méi)有像ext4那樣遭受極端的性能退步。原因是XFS利用了IOMAP_DIO_OVERWRITE_ONLY模式,該模式允許主動(dòng)提交并發(fā)的無(wú)對(duì)齊I/O,并踢回需要部分塊清零的寫操作,以便它們可以在一個(gè)安全、排他的上下文中提交。由于ext4已經(jīng)在提交前執(zhí)行了大部分這些檢查,它可以支持類似的做法,而不一定要依賴iomap標(biāo)志和相關(guān)的重試機(jī)制。
更新dio寫提交路徑,以允許同時(shí)提交不對(duì)齊的直接寫操作,這些寫操作是純粹的覆蓋,所以不需要塊清零。"
Linux 6.5的EXT4更新的完整列表可以通過(guò)這個(gè)拉動(dòng)請(qǐng)求找到:
https://lore.kernel.org/lkml/20230627153618.GA329146@mit.edu/