AWS EC2 とNHN Cloud インスタンスのベンチマーク比較-負荷、IOPS
こんにちは、プロダクト推進部の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=ジョブの名前
- 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
- 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
- IOPS結果をMB/sに変換して表示:
- 2社の数値スペックはある程度合わせたが、ディテイルな部分(CPUのブランド、ClockSpeedなど)まで一致したタイプではないことから、テストの結果が絶対値ではない。参考用程度にしてほしい。
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitterRecommends
こちらもおすすめ
-
AWS、Azure、GCPのGPUインスタンス一覧。価格と性能を比較
2019.10.24
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16