テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

(dm-lc report) 母体3.8.5でのテスト成功 & VM上での簡単な性能測定

この週末は, dm-lcのリリースに向けた開発にほぼすべてを費やしてしまいました. 進捗は以下です.

  1. コードは, 3.2から3.9の母体でコンパイル可能です.
  2. 3.8.5の上で動作を確認しました.
  3. VM上ですが, fioによるパフォーマンス測定を行いました.

1について, 今朝述べたper-bio-dataへの対応も比較的シンプルに取り込みました.

2について, dm-lcはテストとの一つとして, xfsでマウントした後にrubyの並列ビルドとmake testというシナリオを用意しています. これが通ったからすべてOKというわけではもちろんありませんが, コンパイルをして, 内容が正しいことまで確認出来るというのは大きな信頼になります. 今はこの1つしか用意していませんが, 他のソフトウェアでも同様のテストを行うとか, fioを使ってdm-lcが苦手と思われるI/Oパターンを打ち込んでみるとか, 意味がありそうであればdevice-mapper-test-suiteを使ってみるとか, 他のシナリオを追加していきたいと思っています.

3について, 現在, dm-develで議論の対象となっているキャッシュソフトウェアは3つ(bcache, EnhanceIO, dm-cache)です. これらの性能比較が盛んに行われています. 私のdm-lcもこの一つに加わって戦いたいのですが, まずは手元で検証を進めることも重要です.
測定において今回用意したのは以下のスクリプトです. この設定は, 上記した議論の中で使われているものと大体同じです. device-mapper.comや, bcacheでも同様の設定を使っており, 同じベンチマークを使って比較しようという協調があります. ちなみに, キャッシュデバイスは, ホスト側のLVをゲスト上でさらにPVとして, LVを切り出すといういい加減な設計です. 次は, 物理マシンの上で本格的な測定を行う予定です.

使用した設定:

akira@Kamille:~/src/dm-lc/performance/1$ cat script.fio
[global]
filename=/dev/mapper/perflv
randrepeat=1
ioengine=libaio
bs=4k
ba=4k
size=2G
direct=1
gtod_reduce=1
norandommap
iodepth=64
stonewall

[perf]
rw=randwrite

結果は以下です.

4KBランダムライトスループットが100MB/sに達しています. 完全にやばいという性能ではありませんが, HDDを横に並べてこの性能を出すのはとても大変でしょう(お金, スペース, 手間, メンテナンス etc). ソフトウェアの力によってそういうライト性能が簡単に手に入ってしまうのです.

root@Hercules:~/dm-lc/performance/1# sh script
perf: (g=0): rw=randwrite, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=64
2.0.8
Starting 1 process
Jobs: 1 (f=1): [w] [100.0% done] [0K/98.60M /s] [0 /25.3K iops] [eta 00m:00s]
perf: (groupid=0, jobs=1): err= 0: pid=3120
  write: io=2048.3MB, bw=104954KB/s, iops=26238 , runt= 19984msec
  cpu          : usr=4.12%, sys=13.85%, ctx=2145, majf=0, minf=19
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
     issued    : total=r=0/w=524351/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
  WRITE: io=2048.3MB, aggrb=104954KB/s, minb=104954KB/s, maxb=104954KB/s, mint=19984msec, maxt=19984msec

以上です.

1については今後も新しいリリースに追従していく予定です. 3については, 物理マシンの上で本格的な測定を行なって, 新しく報告しようと思います. 最後に, 井山九段おめでとうございます.