12.7. Profiling Crimson
Profiling Crimson は、Crimson でのパフォーマンステストを行う手法です。次の 2 種類のプロファイリングがサポートされています。
-
フレキシブル I/O (FIO):
crimson-store-nbd
は、FIO で使用する NBD サーバーとして、設定可能なFuturizedStore
内部を示します。 - Ceph ベンチマークツール (CBT): Ceph クラスターのパフォーマンスをテストするための Python のテストハーネス。
手順
libnbd
をインストールし、FIO をコンパイルします。例
[root@host01 ~]# dnf install libnbd [root@host01 ~]# git clone git://git.kernel.dk/fio.git [root@host01 ~]# cd fio [root@host01 ~]# ./configure --enable-libnbd [root@host01 ~]# make
crimson-store-nbd
をビルドします。例
[root@host01 ~]# cd build [root@host01 ~]# ninja crimson-store-nbd
ブロックデバイスを使用して
crimson-store-nbd
サーバーを実行します。/dev/nvme1n1
のような RAW デバイスへのパスを指定します。例
[root@host01 ~]# export disk_img=/tmp/disk.img [root@host01 ~]# export unix_socket=/tmp/store_nbd_socket.sock [root@host01 ~]# rm -f $disk_img $unix_socket [root@host01 ~]# truncate -s 512M $disk_img [root@host01 ~]# ./bin/crimson-store-nbd \ --device-path $disk_img \ --smp 1 \ --mkfs true \ --type transaction_manager \ --uds-path ${unix_socket} & --smp is the CPU cores. --mkfs initializes the device first. --type is the backend.
nbd.fio という名前の FIO ジョブを作成します。
例
[global] ioengine=nbd uri=nbd+unix:///?socket=${unix_socket} rw=randrw time_based runtime=120 group_reporting iodepth=1 size=512M [job0] offset=0
コンパイルされた FIO を使用して Crimson オブジェクトをテストします。
例
[root@host01 ~]# ./fio nbd.fio
Ceph Benchmarking Tool (CBT)
2 つのブランチに対して同じテストを実行します。1 つは main
(マスター)、もう 1 つは選択した topic
ブランチです。テスト結果を比較します。すべてのテストケースとともに、2 セットのテスト結果を比較するときに回帰を実行する必要があるかどうかをチェックする一連のルールが定義されます。回帰の可能性が見つかった場合は、ルールと対応するテスト結果が強調表示されます。
手順
メインブランチとトピックブランチから、
make crimson osd
を実行します。例
[root@host01 ~]# git checkout master [root@host01 ~]# make crimson-osd [root@host01 ~]# ../src/script/run-cbt.sh --cbt ~/dev/cbt -a /tmp/baseline ../src/test/crimson/cbt/radosbench_4K_read.yaml [root@host01 ~]# git checkout topic [root@host01 ~]# make crimson-osd [root@host01 ~]# ../src/script/run-cbt.sh --cbt ~/dev/cbt -a /tmp/yap ../src/test/crimson/cbt/radosbench_4K_read.yaml
テスト結果を比較します。
例
[root@host01 ~]# ~/dev/cbt/compare.py -b /tmp/baseline -a /tmp/yap -v