漢なら PB 単位のフラッシュストレージでデータ処理したいですよね! 最近 TB 単位でデータを処理していてすぐに容量が足りなくなって, 涙で枕を濡らすつらい日々が続いていましたが, local SSD が解決してくれそうな予感がしてきました.
早速 GCE に(ベータ版として)追加された local SSD の帯域性能を調べてみましょう.
セットアップ
を参考に local SSD つきインスタンスを生成します.
サンプルを元に 1 個の SSD 領域をマウントして ext4 でフォーマットします.
dd
dd で 32GB データを書いてみます.
# time dd if=/dev/zero of=32GB.dat bs=1GB count=32
32+0 records in
32+0 records out
32000000000 bytes (32 GB) copied, 84.5048 s, 379 MB/s
real 1m24.552s
user 0m0.008s
sys 1m2.348s
読んでみます.
# time dd if=32GB.dat of=/dev/null bs=1GB count=32
32+0 records in
32+0 records out
32000000000 bytes (32 GB) copied, 58.4087 s, 548 MB/s
real 0m58.454s
user 0m0.004s
sys 0m17.484s
cp してみます.
# time cp 32GB.dat 32GB.dat.2
real 2m0.825s
user 0m0.340s
sys 0m41.088s
Cool!
概ね write が 400MB/s, read が 550 MB/s くらいでしょうか. 昨今の SATA3 SSD と同じくらい性能出てますね.
現在はベータ版ですが, 4 SSDs を利用できるので, 4 SSDs 構成なら CG/VFX 用の 1TB キャッシュ領域として使えますね! そのときはストライプで 1.5 ~ 2.0 GB/s くらい狙えそうです. 期待ですね.
TODO
- ストライプ構成にしてより帯域性能高めてみたい.
- IO 発行をスレッド化して同時に行えば, 更に帯域性能上がりそうな予感.