IOPSとスループットのちがい

AMAZON EBS(Elastic Block Store)の汎用SSD(gp2)、プロビジョンド IOPS SSD(io1)、Cold HDD(sc1)、スループット最適化HDD(st1)、マグネティック(standard)を選ぶ際に重要となるIOPSとスループットについてです。

I/O Request Packet(IRP)をバケツリレーとして説明している「Premium Storage を使ってみよう ~IOPS とスループットの関係~」がとてもわかりやすいです。バケツのサイズが異なればI/Oとスループットに影響が出ます。

I/Oについては、PostgreSQLのアーキテクチャー概要|PostgreSQLインサイド : 富士通の「共有バッファー」あたりもわかりやすいです。

IOPS

Input Output per second。ストレージが1秒あたりに処理できるI/O(書き込み・読み込み)アクセスの数。基本的にHDDは1分あたりの回転数(RPM)の限界があるためIOPSが低い。SSDはIOPSが高い。『1秒間のストレージ書きこみ読みこみ性能』。SSDの場合、I/Oの回数寿命が比較的に短い(らしい)事に注意。

  • ディスクが1秒当たりに処理できるI/Oアクセスの数
  • 書き込み(追加・更新・削除)性能はIOPSの影響をうけやすい
  • 読み込み性能はキャッシュに乗る前の初回アクセスが影響を受けやすい
  • データ転送を一度にまとめて行う場合は影響を受けにくい
  • データ転送を細かく分割して行う場合は影響を受けやすい

単位は、IOPSとなります。

スループット

一定時間にどれだけのデータを転送できるか?単位時間あたりでどれくらいの仕事の処理能力があるか。一定時間でどれだけデータを転送できたか。1秒あたりのデータ量をビット数で表す。『1秒間の最大データ転送量

「トラフィック監視」「WAN高速化」「ロードバランサ」などの管理指標。コンピュータやネットワーク機器などの性能を評価する指標。「上り」は送信でアップロード。「下り」は受信でダウンロード。

単位は「bps」「kbps」「Mbps(Mega bit per second)」「Gbps」など。

動画閲覧・WEBサイト閲覧・ゲーム・Wifiルーター・テレビ視聴など、目的や環境によって「下り(ダウンロード)」適正値は異なります。

IOPSはピンポイントでストレージの書き込み読み込み性能をあらわしますが、スループットはネットワーク通信速度的な指標でややスコープが広い様です。

トランザクション

1 秒あたりの I/O 処理数  MB/s

IOPSとスループットのパフォーマンス最適化

ディスクのスループットが大きければアプリケーションのパフォーマンスが必ず上昇するというわけではない。サイズが4KB以下のファイルを数多く書き込む様な場合、スループットよりもIOPS の数値を重視した方がパフォーマンスが上がりやすい。逆に一度の書き込みがGB単位のような大きなサイズの場合、スループットを重視した方がパフォーマンスが上がりやすい。

ボトルネック調査について

スループットだけで性能評価をすることは難しいので、ネットワーク内の様々なリソースを把握した上で、IOPSとスループットのセットで考えていく事が大事。機器が壊れていなければ、リソース1つ1つのスループットやIOPSの数値を一覧表にして、ボトルネックを探してみるのも、ハードウェア故障管理の必要が無いクラウドでは有効な一つの手段です。

仮想環境の共有ストレージにおけるI/Oの一点集中

ローカル開発環境など、ディスク1つの場合が多い仮想環境では、一つのストレージに各仮想環境からHDDへ多くのI/O負荷がかかり、パフォーマンス劣化する可能性があります。その様な場合、AWS移行を行い、EBSのElasticVolumeによる無停止ストレージ拡張やデータベースであればRDSレプリケーションなどによる読み取り専用ストレージの設置(負荷分散)などを導入していくことになります。

KiB MiB GiB Tibについて

キビバイト、メビバイト、ギビバイト、ティビバイト と読みます。1MiB(メビバイト)は2の20乗バイトで1024キロバイト(約1000キロバイト)です。コンピューターの世界に合わせて2進数基準で考えるストレージ向けな容量表記となります。