OCI オブジェクトストレージのアップロード速度を比較してみた

目次

はじめに

本記事では、Oracle Cloud Infrastructure(OCI)のオブジェクトストレージで通常のアップロードとマルチパート・アップロードの性能を比較し、その結果を比較します。

前提条件

  • Oracle Cloud Infrastructureのアカウントを持っていること
  • OCI CLIのインストール、設定が完了していること

参考情報

参考までに筆者の家のインターネット速度を計測しました

今回の検証はこちらの環境で行います。

マルチパート・アップロードについて

マルチパート・アップロードとは

マルチパート・アップロードでは、オブジェクトの個々のパートを並行してアップロードすることで、アップロードに費やす時間を短縮できます。APIを介して実行されるマルチパート・アップロードでは、オブジェクトのアップロード全体を再試行するのではなく、失敗したパートのアップロードを再試行できるため、ネットワーク障害による影響を最小限に抑えることもできます。

OCI公式ヘルプ・センター「オブジェクト・ストレージのマルチパート・アップロード」より引用

マルチパート・アップロードの発生条件

100MiB以上のオブジェクトをアップロードする場合などに利用することをおすすめする。
※コンソールでは64MiBより大きいオブジェクトの場合マルチパート・アップロードが実行される。

OCI技術資料:オブジェクト・ストレージ概要「マルチパート・アップロードの管理

100MiBは約104.86MBとなりますので、大体105MBくらい(コンソールでは64MiBなので約67.11MB)のサイズから使用可能なようです。

事前準備

「100MiB以上のオブジェクトをアップロードする場合などに利用することをおすすめする」との記載がありましたが
調査していくとどうやらマルチパート・アップロードはファイルのサイズに対して自動的に適用されるようなので
少し条件が違いますが今回は以下のファイルサイズでそれぞれ測定します。

通常アップロード:100MB
マルチパート・アップロード:500MB

Windows PowerShellでfsutil file createnewを使ってデータを用意する

  1. ダウンロードフォルダでWindows Power Shellを起動します
    ダウンロードフォルダ内でshift+右クリックし、Windows Power Shellを起動します

  2. 100MBのファイルを作成
    以下のコマンドを実行して、通常アップロード用の100MBの空のファイルを作成します

    • fsutil file createnew:新しいファイルを作成するコマンド
    • testfile_100MB.dat:作成するファイルの名前
    • 104857600:ファイルサイズ100MBを指定しています
  3. 500MBのファイルを作成
    さきほどと同じく以下のコマンドを実行して、今度はマルチパート・アップロード用の500MBの空のファイルを作成します

    • 524288000:ファイルサイズ500MBを指定しています
  4. ファイルの確認
    ダウンロードフォルダを開き、100MBと500MBのファイルが生成されていることを確認します。

OCIコンソールでバケットを作成

OCIコンソールにログインしメニューから[ストレージ] – [オブジェクト・ストレージとアーカイブ・ストレージ]を選択します。「バケットの作成」をクリックし以下の情報を入力します。

  • バケット名:test-bucket01
    その他の項目は全てデフォルトのまま「作成」ボタンをクリックします。

    バケットが作成されました。

    検証

通常アップロードの検証

  1. ファイルのアップロード
    先ほど作成した100MBのファイルをアップロードします。

    • Measure-Command:PowerShellのコマンドの実行時間を測定するコマンド
    • oci os object put:オブジェクトをアップロードするコマンド
    • --bucket-name:アップロード先のバケット名
    • --name:オブジェクトの名前
    • --file:アップロードするファイルのパス
       
      マルチパート・アップロードは適用されず、通常アップロードとなります。
      アップロードが終わったら下記のコマンドを実行し、アップロードにかかった時間を表示します


      アップロードに約49秒かかったことがわかります。

    注釈:
    Measure-Commandコマンドを使用することで、oci os object putコマンドが実行される時間を測定しています。この時間を使ってアップロード速度を計算します。

  2. 性能測定
    以下のコマンドを実行します。

    • Write-Output:PowerShellで結果を出力するコマンド。
    • Time taken: $($uploadTime.TotalSeconds) seconds:アップロードにかかった時間を秒単位で出力しています。
    • Average speed: $(100 / $uploadTime.TotalSeconds) MB/s:1MBあたり何秒かかっているのかという尺度でアップロード速度を計算して出力しています。ファイルサイズ(100MB)をアップロードにかかった時間で割って計算しています。

    結果は以下のようになりました。

    マルチパート・アップロードの検証

  3. ファイルのマルチパート・アップロード
    マルチパート・アップロードは大きいファイルでは自動的に適用されます。
    さきほどと同じ方法で今度は500GBのファイルをアップロードします。

    100MBの時と違いSplit file into 4 parts for upload.という一文が入っていることから
      自動で4つに分割されてアップロードされていることがわかります。

    アップロードが終わったら下記のコマンドを実行し、アップロードにかかった時間を表示します

    アップロードに約110秒かかったことがわかります

  4. 性能測定
    マルチパート・アップロードの速度や時間を測定します。

    結果は以下のようになりました。

    アップロード速度の比較

1MBあたり何秒かかっているのかという計算をそれぞれ行った結果
以下のような数値が得られました:

マルチパート・アップロードの方が速くアップロードされることがわかります。

まとめ

今回は、OCIのオブジェクトストレージに対する通常のアップロードとマルチパート・アップロードの速度比較を行い、マルチパート・アップロードの方が通常アップロードよりも速いことが確認できました。
大きいファイルのアップロード時は自動でマルチパート・アップロードに切り替えられるので意識することがあまりないですが、アップロード時間の短縮に大きな影響があることがわかりました。

スマートスタイルTECHブログについて

スマートスタイルTECHブログでは、日頃OCIのサポート業務に従事している有資格者で構成された技術サポートチームがOCIに関する技術情報を発信しています。データベースのお困りごとはお気軽にご相談下さい。

\ セミナーのご案内 /
CData社・オラクル社・スマートスタイル共催セミナー
よかったらシェアしてね!
  • URLをコピーしました!
目次