Linux
btrfs 性能
我決定亂來
btrfs
,發現了一些奇怪的性能異常。我所做的測試是使用兩個外部硬碟驅動器,一個與另一個ext4
格式化btrfs
。
ext4
性能結果如下:$ sudo dd if=/dev/zero of=/media/Backup/out.img count=1024 bs=1024k 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 24.1959 s, 44.4 MB/s $ sudo dd if=/dev/zero of=/media/Backup/out.img count=1024 bs=1024k 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 24.1619 s, 44.4 MB/s
44.4MB/s 對我來說是典型的,但現在
btrfs
(注意:我似乎總是在刪除文件後立即獲得如此高的 3.1GB/s IO):$ sudo dd if=/dev/zero of=/tmp/test/out.img count=1024 bs=1024k 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 0.347933 s, 3.1 GB/s $ sudo dd if=/dev/zero of=/tmp/test/out.img count=1024 bs=1024k 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 1.1732 s, 915 MB/s $ sudo dd if=/dev/zero of=/tmp/test/out.img count=1024 bs=1024k 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 1.21539 s, 883 MB/s $ sudo dd if=/dev/zero of=/tmp/test/out.img count=1024 bs=1024k 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 1.25093 s, 858 MB/s
我的問題是這裡發生了
btrfs
什麼?為什麼性能IO高很多?我什至跑了一個sync
,它立即完成。我正在執行最新的穩定核心。
我還建議您使用其他工具來對 I/O 進行基準測試,而不是
dd
. Brtfs 不是傳統的文件系統,它是一個寫時複製和事務性文件系統,大部分操作都在記憶體中完成,而不是直接在硬碟上完成。因此,當您發出刪除並重新創建文件時,我相信它只會重用記憶體中的內容。不要忘記您正在創建一個僅用零初始化的文件。BRTFS 僅在超時或達到足夠頁面時才寫入磁碟。
我建議您查看此文件(PDF)。它提供了更深入的解釋,更詳細地解釋了您的問題。