Block Volume elastic performance
本記事は2019年12月9日時点の内容になります。
OCIで先月Block Volume elastic performanceがリリースされました。
以前までのBlock Volume(以下BV)では、パフォーマンス面での選択肢はなかったのですが、このリリースにより高いパフォーマンスを必要としない低コストなオプションや、逆にコストは上がりますがハイパフォーマンスなオプションを選択できるようになりました。
以下のようなレベルになるようです。
一番右の列にあるVPUsがコストを計算する上で重要な値となっています。コスト計算については、後述します。
OCIのBVは最小50GBから使用可能です。例えば[Balanced]の最小IOPSは、60 IOPS × 50 GB = 3,000 IOPS程度出る計算です。
今回、上記オプションを設定し、実際のパフォーマンスを確認してみました。
パフォーマンス
BV作成
まずはBVをCLIを使用して作成します。
1 2 3 4 5 6 |
oci bv volume create --availability-domain zHIu:AP-TOKYO-1-AD-1 \ --compartment-id $compartment_ocid \ --size-in-gbs 50 \ --display-name vb1 各OCIDはエイリアスとして登録しています。 |
作成したBVをインスタンスにアタッチします。
今回はiscsiを使用しています。
1 2 3 |
oci compute volume-attachment attach-iscsi-volume \ --instance-id $compute_ocid \ --volume-id $vb_ocid |
パフォーマンスの変更は、コンソール画面の「change performance」から変更可能です。
確認すると、以前からのデフォルトであるBalancedとなっていることがわかります。
sshでインスタンスにログインし、デバイスをアタッチします。
1 2 3 4 5 6 |
sudo iscsiadm -m node -o new -T iqn.2015-12.com.oracleiaas:046d2609-8051-4081-9dce-b2213c0b6a36 -p 169.254.2.4:3260 sudo iscsiadm -m node -o update -T iqn.2015-12.com.oracleiaas:046d2609-8051-4081-9dce-b2213c0b6a36 -n node.startup -v automatic sudo iscsiadm -m node -T iqn.2015-12.com.oracleiaas:046d2609-8051-4081-9dce-b2213c0b6a36 -p 169.254.2.4:3260 -l sudo parted -s /dev/sdc mklabel gpt mkpart primary 0% 100% sudo mkfs.xfs /dev/sdc1 |
Balancedレベル
まずはデフォルトである[Balanced]でIOPSのパフォーマンスを確認してみます。
OCIのマニュアルにあるFIOを使用したランダム READ/WRITEを実施してみます。
1 |
sudo fio --filename=/dev/sdc1 --direct=1 --rw=randrw --bs=4k --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting --name=iops-test-job --eta-newline=1 |
IOPS部分の結果抜粋
1 2 3 |
iops-test-job: (groupid=0, jobs=4): err= 0: pid=24743: Mon Dec 9 17:24:21 2019 read: IOPS=1517, BW=6070KiB/s (6216kB/s)(712MiB/120064msec) write: IOPS=1517, BW=6068KiB/s (6214kB/s)(712MiB/120064msec) |
read/writeのIOPSを合計すると3,034となり凡そパフォーマンスレベルに記載があったレベルと同等でした。
Higher Performanceレベル
パフォーマンスレベルを[Higher Performance]レベルに変更して、同じコマンドを実行してみます。
なお、パフォーマンスレベルの変更は1分程度で完了いたしました。
IOPS部分の結果抜粋
1 2 3 |
iops-test-job: (groupid=0, jobs=4): err= 0: pid=24895: Mon Dec 9 17:36:48 2019 read: IOPS=1898, BW=7595KiB/s (7777kB/s)(890MiB/120060msec) write: IOPS=1900, BW=7602KiB/s (7785kB/s)(891MiB/120060msec) |
read/writeのIOPSは合計3,798とパフォーマンスが上がっています。
Lower Costレベル
最後に[Lower cost]レベルを試してみます。
IOPS部分の結果抜粋
1 2 3 |
iops-test-job: (groupid=0, jobs=4): err= 0: pid=25211: Mon Dec 9 18:10:54 2019 read: IOPS=49, BW=200KiB/s (204kB/s)(23.9MiB/122451msec) write: IOPS=52, BW=209KiB/s (214kB/s)(24.9MiB/122451msec) |
read/writeのIOPSは合計101と大きく低下していました。
数値的に全てマニュアルにあった値とほぼ同等の結果となりました。
コスト
それぞれのパフォーマンスにおけるコストも確認しておきます。
コスト一覧ページ
ストレージ部分を見ると下記のように記載されています。
少しわかりづらく感じますが、ボリューム容量に基づく基本コストを算出し、パフォーマンスレベルに基づくコストを加算することになります。パフォーマンスコストの計算は、ボリューム容量にVPUsの値(10もしくは20)を掛け合わせ、さらに単価を掛け合わせます。
本記事のように50GBのボリューム容量で計算すると、各パフォーマンスレベルの値段は下記のようになります。
パフォーマンスレベル | 計算例 | 価格 |
---|---|---|
Lower cost | 基本コスト + パフォーマンスコスト = ( 50GB × 3.06円 ) + 0円 | 153円 |
Balanced | 基本コスト + パフォーマンスコスト = ( 50GB × 3.06円 ) + ( 50 GB × 10 VPUs × 0.204円) | 255円 |
Higher Performance | 基本コスト + パフォーマンスコスト = ( 50GB × 3.06円 ) + ( 50 GB × 20 VPUs × 0.204円) | 357円 |
本リリース以前は[Balanced]になっていました。
まとめ
今回のリリースでBVの選択肢も増えました。
コストとパフォーマンスの兼ね合いを考えて、BVを選択しOCIを効率的に使えるのは嬉しいですね。
OCIではBVだけでなく、その他のサービスもリリースノートを見ると、続々と追加されているのがわかります。
今後のOCIの発展を見据えて、是非一度触れてみては如何でしょうか