COSBenchでAmazon S3とCloudn Object Storageのベンチマーク

COSBenchというオブジェクトストレージのベンチマークツールを使ってみました。

isdCOSBenchのしくみと実行手順

COSBenchのしくみと実行手順については、AWS荒木さんによる記事がとてもわかりやすくまとまっているので、そちらを参照していただくとよいでしょう。

・オブジェクトストレージのベンチマークツール、COSBench
http://awssa.blogspot.jp/2013/12/cosbench.html

ひとつ注意することとしては、COSBenchはバケットの作成・削除を行いますので、「バケット作成」権限をもつユーザーのアクセスキーID、シークレットアクセスキーが必要です。
AWSであれば、IAMで一時的に、S3にフルアクセスできる権限をもつユーザーを作成するとよいでしょう。

AWS IAMでS3フルアクセス権限を付与


 

isdAmazon S3のベンチマークテスト

・Amazon S3
https://aws.amazon.com/jp/s3/

AWSのTokyoリージョンのEC2サーバーから、同じくTokyoリージョンのS3に対して負荷テストを行います。
S3アクセスのクライアントとなるDriver(とController)はEC2 t2.microインスタンスを使用し、AMIは ubuntu-precise-12.04-amd64-server-20140428 を指定しました。
(COSBenchはubuntu12.03 LTSがメインサポートとのこと。)

負荷を定義するワークロードファイルは、S3用サンプルの conf/s3-config-sample.xml をアクセス情報だけ変更して使用しました。
ファイルサイズ64KB、Read 80%/Write 20%の負荷テストとなります。

AWSのendpointは、以下で公開されています。
テストを行いたいリージョンのendpointを指定します。

・AWS Documentation, Regions and Endpoints
http://docs.aws.amazon.com/general/latest/gr/rande.html

-- conf/s3-config-sample.xml 変更前
  <storage type="s3" config="accesskey=<accesskey>;secretkey=<scretkey>;proxyhost=<proxyhost>;proxyport=<proxyport>;endpoint=<endpoint>" />
--

-- conf/s3-config-sample.xml 変更後
  <storage type="s3" config="accesskey=<accesskey>;secretkey=<scretkey>;endpoint=s3-ap-northeast-1.amazonaws.com" />
--

また、cprefixで、テストで作成するバケット名のプレフィクスとして、S3全体でユニークとなるような名前を指定します。
初期状態では、いくつかの箇所で cprefix=s3testqwer が指定されているので、ひとつずつ編集するか、sedコマンドやエディターの機能などで一括変換します。

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

COSBench結果 – AWS S3


 

isdCloudn Object Storageのベンチマークテスト

Amazon S3に続いて、Cloudn Object Storageでも負荷テストを行ってみました。

・Cloudn Object Storage
http://www.ntt.com/business/services/cloud/iaas/cloudn/storage.html

Cloudnの仮想サーバーCompute(FLATタイプ)東日本リージョンのサーバーから、東日本リージョンのCloudn Object Storageに対して負荷テストを行います。
ControllerとDriverは、Compute m1.smallインスタンスにインストールし、OSテンプレートは Ubuntu Server 14.04 64bit を指定しました。

負荷を定義するワークロードファイルは、Amazon S3のときと同様に、S3用サンプルの conf/s3-config-sample.xml をアクセス情報だけ変更して使用しました。

endpointは、APIのマニュアルに記載されているとおり、str.cloudn-service.com です。

・Cloudn Object Storage APIマニュアル (PDF)
http://info.cloudn-service.com/wordpress/wp-content/uploads/documents/JP/ejp/objectstorage_common_api_manual.pdf

-- conf/s3-config-sample.xml 変更前
  <storage type="s3" config="accesskey=<accesskey>;secretkey=<scretkey>;proxyhost=<proxyhost>;proxyport=<proxyport>;endpoint=<endpoint>" />
--

-- conf/s3-config-sample.xml 変更後
  <storage type="s3" config="accesskey=<accesskey>;secretkey=<scretkey>;endpoint=str.cloudn-service.com" />
--

また、cprefixで、テストで作成するバケット名のプレフィクスとして、Cloudn Object Storage全体でユニークとなるような名前を指定します。

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

COSBench結果 – Cloudn Object Storage


 

スループット、帯域幅、レイテンシーなどは、Amazon S3比べて大差ない値となりました。

isdまとめ

オブジェクトストレージのベンチマークツールCOSBenchを使用して、Amazon S3とCloudn Object Storageのベンチマークテストを行ってみました。
他のオブジェクトストレージサービスについては、「さくらのBASE Storage」はAPIではバケットの作成ができないため、「IDCフロンティアのオブジェクトストレージ」は、現時点ではカード決済ではサービスが利用できないため、テストを行っていません。

今回は、オブジェクトストレージサービスの事業者が提供するサーバーをクライアントと見立ててテストを行いましたが、実運用のための検証を行う場合は、AWS荒木さんの記事でも書かれているとおり、実運用に近い環境、設定でテストを行ってみるとよいと思います。

例えば、「社内から平均1MB程度の画像データを共有するためにオブジェクトストレージを利用する。読み書きの比率は同じぐらい。」ということであれば、下記のようにすると運用に近い性能が確認できるでしょう。

  • Controller& Driver: 社内ネットワーク上のUbuntu
  • ファイルサイズ: 1MB
  • Read/Write比率: 50%/50%

  • Follow me!