BTRFSパフォーマンス

BTRFSパフォーマンス

私はいくつかの問題を解決することを決め、btrfsいくつかの奇妙なパフォーマンス異常を発見しました。私が行ったテストは、2つの外付けハードドライブを使用することでした。 1つはext4もう1つは。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すぐに完了しました。

私は最新の安定したカーネルを実行しています。

答え1

Brtfsは従来のファイルシステムではddなく、ほとんどの作業がハードドライブ上で直接実行されるのではなく、メモリ内で実行される書き込み時のコピーおよびトランザクションファイルシステムです。

したがって、削除コマンドを実行してファイルを再生成すると、メモリ内の内容を再利用するだけです。 0だけで初期化されたファイルを生成することを忘れないでください。 BRTFSは、タイムアウト後または十分なページに達した場合にのみディスクに書き込みます。

ぜひご覧ください。このファイル(PDF).問題の詳細な説明と可能な説明を提供します。

答え2

これはBTRFSがサポートしているためです。スパースファイル。デフォルトでは、「空のスペース」(0ビット)の十分に長い文字列は、実際にディスクにゼロを書き込むのではなく、「このポイントから次のポイントまですべて0です」というメタデータとして保存されます。この場合、入力ストリームは/dev/zeroなのでみんなファイルはゼロなので、ディスクの実際のサイズはメタデータの一部にすぎません。

しかし、最初にファイルを削除してからスループットが著しく増加する理由はわかりません。

関連情報