ファイルシステムのブロックサイズと性能との関係
RAID3の構築に伴いファイルシステムを作り直す(newfsする)ことになったが、そのついでに、今まで気になっていたことを確認してみた。
それはファイルシステムのブロックサイズが、どのくらい性能に影響を与えるかということ。一般に、ブロックサイズを大きくすると、
- 大きいファイルのアクセスが早くなる
- 小さいファイルのディスク利用効率が悪くなる
が、今回newfsするところはテレビ録画のデータを置くところ。すなわち、1つのファイルの大きさが数GB程度。だから、ディスク利用効率の面ではほとんど問題にならない。その代わり、アクセススピードはできるだけ早いほうが良い。
普段は、小さいファイルを保存することも多いし、ブロックサイズを変えたときの影響の度合いもよく分からなかったため、無難にデフォルトのまま(1ブロック=16384bytes)newfsしていたが、今回は大きくすることを考えてみてもよさそう。
というわけで、ブロックサイズを大きくしてみて、ディスクへのアクセススピードを測定した。測定したのは次の3種類。
- 16384bytes (デフォルト)
- 32768bytes (デフォルトの2倍)
- 65536bytes (デフォルトの4倍)
測定環境は次の通り。
- 測定対象はgraid3でRAID3構成
- softupdate使用
- 他のnewfsオプションは指定しない
- newfsした直後のファイルシステムをマウントして測定
- 測定にはbonnieを使用
測定結果はある程度予想通り。以下には1回分の測定結果しか示さないが、実際はそれぞれ3回行って、結果がほぼ同じことを確認している。
1. ブロックサイズ 16384bytes (デフォルト)
# newfs -U /dev/raid3/data0d
# mount /dev/raid3/data0d /mnt
# (cd /mnt; bonnie -s 500 -m "BS=16384")
-------Sequential Output-------- ---Sequential Input-- --Random--
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --Seeks---
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
BS=16384 500 65201 69.2 101385 42.3 29476 10.6 54867 59.5 90455 19.1 625.3 2.4
2. ブロックサイズ 32768bytes (デフォルトの2倍)
# newfs -b 32768 -U /dev/raid3/data0d
# mount /dev/raid3/data0d /mnt
# (cd /mnt; bonnie -s 500 -m "BS=32768")
-------Sequential Output-------- ---Sequential Input-- --Random--
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --Seeks---
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
BS=32768 500 68512 70.6 116924 42.4 33275 11.3 72407 80.5 124255 28.2 694.1 3.3
3. ブロックサイズ 65536bytes (デフォルトの4倍)
# newfs -b 65536 -U /dev/raid3/data0d
# mount /dev/raid3/data0d /mnt
# (cd /mnt; bonnie -s 500 -m "BS=65536")
-------Sequential Output-------- ---Sequential Input-- --Random--
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --Seeks---
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
BS=65536 500 69374 70.2 115512 41.5 33527 11.3 72354 79.0 124750 28.3 605.8 3.6
ブロックサイズを16384bytes (デフォルト)から32768bytes (デフォルトの2倍)に変えたときには、書き込みで1割、読み込みで2割程度の速度向上が見られた。しかし、32768bytes (デフォルトの2倍)から65536bytes (デフォルトの4倍)へは、ほとんど変化が見られない。
これから、今回の環境では、ブロックサイズ32768bytesが最適だろうから、これで使っていくことにした。
| 固定リンク
この記事へのコメントは終了しました。
コメント