Linux

btrfs 性能

  • January 30, 2013

我決定亂來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)。它提供了更深入的解釋,更詳細地解釋了您的問題。

引用自:https://unix.stackexchange.com/questions/60032