web-dev-qa-db-ja.com

SSDアレイでのext4とbtrfsのパフォーマンス

説明できないことを観察しています。 HPP420iコントローラーとSSDを使用して適切なファイルシステム構成を考え出そうとしています。好奇心からBTRFSを試してみましたが(まだ不安定なので、実際に使用できるとは期待できません)、読み取り速度がext4の約150%であることに気付きましたが、書き込み速度は同等です。

明確にするために、私は256Kbのストリップサイズの2つのSSDでRAID0を使用しています。私は6つのディスクを持っているので、テスト用に3つの論理ディスク(それぞれ2つのSSD)を作成しました。そして、ext4、XFS、BTRFSでフォーマットしました。

書き込み(dd if =/dev/zero of = test2 bs = 512k count = 20000 conv = fdatasync、fsyncなど)してiostatsを使用してシステムを監視すると、BTRFSとEXT4の両方がほぼ同じ速度で書き込みを行っていることがわかります。同様の数の書き込み要求:

(ext4-書き込み)
デバイス:rrqm/s wrqm/sr/sw/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm%util 
 sdb 0.00 0.00 0.00 1791.00 0.00 895.00 1023.43 141.73 78.97 0.56 100.00 
(btrfs-書き込み)
デバイス:rrqm/s wrqm/sr/sw/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm%util 
 sdc 0.00 0.00 0.00 1786.00 0.00 893.00 1024.00 137.87 77.21 0.56 100.10 

私が読んだとき、私は別の絵を観察します:

デバイス:rrqm/s wrqm/sr/sw/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm%util 
(ext4-reading)
 sdb 0.00 0.00 4782.00 0.00 597.75 0.00 256.00 1.57 0.33 0.18 84.10 
(btrfs-読み取り)
デバイス:rrqm/s wrqm/sr/sw/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm%util 
 sdc 207.00 0.00 1794.00 0.00 886.40 0.00 1011.90 10.59 5.90 0.56 100.00 
(xfs-読み取り)
デバイス:rrqm/s wrqm/sr/sw/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm%util 
 sdd 0.00 0.00 4623.00 0.00 577.88 0.00 256.00 1.71 0.37 0.21 97.00 

そして、これは、ddを使用してブロックデバイスを読み取ろうとした場合に表示されるものです。

(読み取りブロックデバイス)
デバイス:rrqm/s wrqm/sr/sw/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm%util 
 sdb 132055.00 0.00 4259.00 0.00 532.38 0.00 256.00 1.61 0.38 0.23 99.80 
 sdc 131750.00 0.00 4250.00 0.00 531.25 0.00 256.00 1.58 0.37 0.24 100.00 
 sdc 142476.00 0.00 4596.00 0.00 574.50 0.00 256.00 1.61 0.35 0.20 92.40 [.___

3つの論理ボリュームすべてについて、すべての設定が同じであるように見えます(I/Oスケジューラー、先読み...)。

したがって、他のすべてが等しい場合、btrfsが1秒あたりの読み取り回数を大幅に減らし、1秒あたりの読み取り回数を増やすことがはっきりとわかります。そして、そのrrqm/sの数-これはマージされたリクエストの数です。 btrfsでフォーマットされたデバイスでのみ表示されます。

カーネル:3.8.13-35.3.5.el6uek.x86_64#2SMP金8月8日21:58:11PDT 2014 x86_64 x86_64 x86_64 GNU/Linux

困惑。そのような違いを生むために特別なbtrfsができること(そしてext4とxfsはできないこと)は何ですか?

追伸いいえ、マウントオプションcompress = noで圧縮は無効になります

1

BTRFSはメモリキャッシュを広範囲に使用します。これがおそらくこの動作の原因です。 XeonE3-1220システムで最大8GB/sの読み取り速度を確認しました。これは、現在のメモリ構成でほぼ予想される速度です。実際のハードウェアは2つの1.5TBディスクと2つの1TBディスクであり、ページファイルはSSD上にあることに注意してください(これも違いを生みます)。

[root@Helium ~]# dd if=/storage/btrfs-raid10/isos/ubcd533.iso.1 of=/dev/null bs=1M
592+1 records in
592+1 records out
621176832 bytes (621 MB) copied, 0.0770955 s, 8.1 GB/s
1
Alex