はじめに
注:iSCSIの方が性能が良い、と投稿しましたが改めてデータを取得したところ、無料枠レベルのサイズでは誤差というか違いが判らないレベルでしたので、訂正いたします
Oracle Cloudにおいて、VMインスタンスにアタッチできる ブロック・ボリュームのアタッチメントタイプは準仮想化タイプとiSCSIタイプの二種類 あります。
ボリューム・アタッチメントのタイプの説明は以下のようになります。
- 準仮想化: VMで使用可能な仮想化アタッチメント。
- iSCSI: ボリュームとアタッチされたインスタンスとの間の通信に使用されるTCP/IPベースの規格。
また、IOPSパフォーマンスはiSCSIアタッチメントのほうが準仮想化アタッチメントよりも高くなる、という説明があります。具体的にどの程度パフォーマンスが違うのか、確認してみました。
(以前はパフォーマンスSLAの対象にはiSCSIのみ、という記載がありましたが、現時点では削除されており、準仮想化タイプでもSLA対象となるようです)
ボリュームアタッチメントタイプの違いによる性能差
以下のように、二つのボリュームを同一のインスタンスにアタッチします。
(VPUは両方ともデフォルトの10、サイズは500GB)
fioを用いて、両方のディスクに対して、ブロックサイズを4kB、1MB で負荷をかけた時の性能を測定しました。
- 4kB 固定
種類 | 準仮想化 IOPS |
iSCSI IOPS |
準仮想化 スループット(MiB/s) |
iSCSI スループット(MiB/s) |
---|---|---|---|---|
sequential read | 60.7k | 60.8k | 237 | 237 |
sequential write | 60.3k | 60.3k | 235 | 236 |
random read | 25.4k | 25.4k | 93.8 | 99.2 |
random write | 25.3k | 25.3k | 98.8 | 98.7 |
- 1MB 固定
種類 | 準仮想化 IOPS |
iSCSI IOPS |
準仮想化 スループット(MiB/s) |
iSCSI スループット(MiB/s) |
---|---|---|---|---|
sequential read | 237 | 237 | 237 | 237 |
sequential write | 234 | 235 | 235 | 237 |
random read | 237 | 237 | 237 | 237 |
random write | 235 | 235 | 235 | 236 |
まとめ
性能に関しては上記の環境ではほぼ違いを確認することはできませんでした。
OCIのブロックボリュームの パフォーマンスレベル に記載がありますが、500GBのバランス(VPU10) ブロックボリュームのIOPS上限は次の表になります。
最大IOPS | 最大MBPS | |
---|---|---|
500GB | 30,000 | 240 |
ここで、バランスボリュームのボリューム当たりの最大IOPSは25,000となるため、実質的には 25,000IOPS、240MB/sが上限となり、テスト結果も大体そのような値になってます。
(シーケンシャル読み取り・書き込みで60k超のIOPSが出てますが、マルチブロックでIOが実施されていると想定してます)
インスタンスのコア数やブロックボリュームを高速化していくことで、違いが見えてくるかもしれません。
テストできる環境ができたら、もう少し幅を広げて確認してみたいと考えてます。