AWS EC2 とNHN Cloud インスタンスのベンチマーク比較-負荷、IOPS

AWS

2022.5.23

Topics

こんにちは、プロダクト推進部のFeelです。
下記の資料は以前、プロジェクトで活用した資料です。AWSはクラウドインフラの代表的なブランドであり、信頼性が高いが、それに比べ認知度が相対的に低いNHN CloudのCompute(OpenStack基盤)インスタンスと果たしてどれぐらいのクオリティの差があるか比較しました。

1. テスト用スペック(共通)

※アプリケーション運用を前提としたサーバータイプを選択
※Linux環境(CentOS 7.5)
※Region:東京
AWS EC2 c5d.2xlarge (8vCPU, 16GB) /CentOS 7/ SSD 80GB c5d タイプ:
ビデオエンコーディング、イメージ操作、及びその他の形式でのメディア処理向けに高速で低レイテンシのローカルストレージにアクセスする必要があるアプリケーションに最適。更に、バッチ処理やログ処理、及びキャッシュやスクラッチファイルが必要なアプリケーションなどの、データの一時的な格納が必要なアプリケーションにも役立つ
NHN Cloud compute m2.c8m16  (8vCPU, 16GB)) / CentOS 7.5 / SSD 80GB m2 タイプ:
CPUとメモリをバランスよく設定した仕様。サービスやアプリケーションの性能の必須要件が明確でない場合に使用する

2. 負荷テスト(WAS)

  • テスト目標
    • 自分が作ったウェブサーバーがアクセス過多になるとパフォーマンスが悪化したり、負荷がかかった時に、システムダウンが起きるかもしれないので、このテストの結果を元にどの程度のユーザー数に耐えることができるかを確認するために、1秒単位のThroughputを測定する。
  • 概要
    • RPS(Requests per second)を測定: 1秒に処理するHTTP request数
    • ネットワークの変数影響を減らすためglobal ipを利用するテストは避けた。(tier構造はセキュリティーやトラフィック管理上、アプリサーバーをglobal ipにダイレクトに連結するケースもあまりないため)
    • abテスト利用 :ab -n 1000000 (-c 1,5, 10, 50, 100 ) URL
      • -c 同時リクエスト数(ユーザー数)
      • -n ベンチマークセッションで実行するリクエストの総数

2-1. 負荷テストの結果

AWS EC2

concurrency Local call インスタンス間  call(private ip)
1 9,932 4,106
5 23,400 16,689
10 23,573 25,031
50 26,789 29,920
100 26,477 29,883

◆NHN Cloud compute◆

concurrency Local call インスタンス間  call(private ip)
1 8,748 3,746
5 28,300 13,922
10 24,287 20,634
50 29,508 31,128
100 28,382 29,576

 3. IOPSテスト

  • テスト目標
    • IOPS(秒あたりの入力/出力操作)とはハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)及びストレージ・エリア・ネットワーク(SAN)のようなストレージデバイスにて使用される一般的なパフォーマンスを表す測定値である。各クラウドインスタンスにて使用しているストレージのR/Wーを把握する時に利用可能な数値だと思う。
    • 特にDB性能に大きい影響を及ぼすのがストレジI/Oであるため IOPSテスト結果を介して該当ブランドのDBインスタンス利用を考慮する時に指標として使用可能である。
  • 概要
    • fioツールを利用する。各測定での共通条件として、2分間、I/Oのブロックサイズは4KBで、1つ当たり1Gのサイズのファイルに対して、1つのスレッドが4並行でI/Oを実行することとする。
    • シーケンシャルリード、シーケンシャルライト、ランダムリード、ランダムライトの4種類の測定を行う。
    • コマンド(添付ファイル参照)
      • sudo  fio –filename=/dev/vdb1 –direct=1 –rw=(read/write/randread/randwrite) –bs=4k -size=1G  –iodepth=256 –runtime=120 –numjobs=4 –time_based –group_reporting –name=(toast_r /toast_w/toast_rr/toast_rw) –eta-newline=1
        • filename->指定したファイルパスにテスト用のファイルを作成する
        • direct->trueの場合にはnon-buffered I/Oで計測する。バッファは使いたくないので1
        • rw->I/Oのパターンを指定。シーケンシャルリード、シーケンシャルライトなど。readはシーケンシャルリードを示す
        • bs->I/Oで利用するブロックのサイズ
        • size->I/Oで利用する合計のサイズ
        • runtime->実行時間の限度。秒単位。
        • iodepth->ファイルに対するIO書き込みのユニット数
        • group_reporting->有効にするとnumjobsで複数処理した結果をまとめて表示する
        • name=ジョブの名前
    • fioツールのversion : fio-3.22-25-ge684

3-1.IOPSテストの結果

※結果を見る方法

  • bw->帯域幅、スループット
  • iops->IOPS
  • 下記例を見るとIOPSは4001と記載されている。つまりこのストレージは1秒間で4KBのブロックを4001回読み込みができるということを意味し、4KB*4001=16004KBが1秒間にやりとりできるデータ量ということになる。

 ◆AWS EC2◆

  • シーケンシャルリード

 

  • シーケンシャルライト

 

  • ランダムリード

 

  • ランダムライト

 

◆NHN Cloud compute◆

  • シーケンシャルリード

 

  • シーケンシャルライト

 

  • ランダムリード

 

  • ランダムライト

 

4.まとめ

  • 負荷テスト(WAS)のlocal、IOPSはむしろNHN Cloud compute(OpenStack基盤)の数値が良いように見えるが負荷テスト(WAS)についてはサービスに影響を与える程の差は見られない。IOPSの場合も4 MB/sくらいの差であり、サービスに影響はないと思われるがさらに正確な判断をするために、後でMysqlを回すテストを行う予定
    • IOPS結果をMB/sに変換して表示:
      • NHN Cloud compute : (4000×4)/1024=15.625 ‬MB/s
      • AWS EC2: (3024×4)/1024=11.8125 ‬MB/s
  • 2社の数値スペックはある程度合わせたが、ディテイルな部分(CPUのブランド、ClockSpeedなど)まで一致したタイプではないことから、テストの結果が絶対値ではない。参考用程度にしてほしい。

 

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら