aws memo

AWS関連の備忘録 (※本ブログの内容は個人的見解であり、所属組織及び企業の意見を代弁するものではありません。1年以上古いエントリは疑ってかかってください)

RDS: Provisioned IOPS (PIOPS)の性能について覚書き

EBSでのProvisioned IOPS (以下 PIOPS) が出て、しばらくして RDSでも PIOPSに対応した。その後、RDSのIOPS上限が10,000から30,000に引き上げられた。

Amazon Web Services ブログ: 【AWS発表】Amazon RDS がスケールアップ! 3 TB、30,000 PIOPSまで拡張可能に

され、これでRDSでIOPS30,000の性能が出る!とおもいきや、落とし穴(注意書き)が。

Factors That Affect Realized IOPS Rates

実際に出るIOPSは、ページサイズとネットワーク帯域に依存する。ページサイズはDBエンジン毎にきまっている。IOPSはDBインスタンスサイズやDBの負荷パターンにも影響をウケる。

DB EnginePage SizeMaximum IOPS Rate
MySQL 16 KB 12,500
Oracle 8 KB 25,000
SQL Server 8 KB 10,000

つまり、db.m2.4xlargeが、EBSとの帯域がfull duplex 1000Mbpsで、MySQLだと16KBのページサイズなので、各方向( read, write) の上限が6,250 IOPSになる。

 1,000 Mbps / (16KB x 1.28)  = 6,250  IOPS    ※1.28の係数は over Etherの色んなオーバーヘッド?

よって、read, writeがそれぞれ上限値に達していれば、 12,500 IOPSになる、という理論値が導出される。

ただし、上記の条件以上にIOPSを設定した場合は無意味ではなく、write latency, read latencyは改善されていくので、絶対的なIOPSではなく、1回のクエリのパフォーマンスを向上させる目的では引き続き有効である、といえる。

(つまり、MySQL db.m2.4xlargeでベンチマークを実施すると、write/read IOPSは5,000〜6,000あたりでサチるが、write/read latencyはPIOPSに応じで改善されることになる)

 

EBSがネットワークストレージのため、ストレージ+ネットワークの両方を考えないと、理論値すら理解しづらい。

 

こちらも参考に

Cloud, Big Data and Mobile: Part 10: Performance Tuning Amazon Elastic Block Store - IO Block Size