RDSのiopsが1,000となっていればinnodb_page_sizeの数値をかけ合わせた数値がスループットになると思っていた。この例で言えば1,000[iops] * 16,384[byte] ≒ 16[MB]
あたり。だがメトリクスを見るとwriteが多い時間帯はこのような計算式当てはめることが出来なかった。
innodb_page_sizeとは
innodbが管理するページのサイズ。このページにはレコードが入っていてinnodbはこの単位でしかIOを発行できない。1レコード読む際も必ずこのサイズのデータのやり取りが発生する
EBSのブロックサイズ
EBSはローカルディスクでは無いのでブロックサイズは意識しなくてよい?(ネットワークを介して通信をする。重要なのは帯域であってブロックサイズは重要性は低そう?)
この辺は以下の回答コメントで割と腑に落ちた
EBS性能測定とかも色々見たがブロックサイズを上げることで性能が上限まで線形にスケールしていそう
なんで合わないのかの推測
innodb_page_sizeはあくまでもテーブルスペースのデータのやり取りの話になるのでMySQLは他にも色々仕事をしてるのでそのへんが実はblock sizeが16Kibではないのではという予想。redo log bufferのflushやらpage cleanerとかバックグラウンドで動いてるスレッドは多々ありこの辺がblock size 1MBあたりででIOしてれば上記で上げた計算式からはずれそう。
あとはこんなオプションもあったりする。5.6からデフォルトでオンでダーティページのflushの際に近くのダーティページのflushを1IOで行うというオプション。16Kib * 隣接するページとなる。
感想
ストレージの性能指標難しい