research
- PostgreSQL on tmpfs
research - The arrow of time - PostgreSQL on tmpfsにおいて興味深い実験結果が公開されています。バックエンドをメモリファイルシステムにしたプラットフォームでPostgreSQLのベンチマーク試験を実施するというものです。次の事項について調査していることになります。
- メモリファイルシステムとしてはmd(4)とtmpfs(5)のどちらの方が高速か
- PostgreSQLのスケーラビリティの傾向
- FreeBSDのスケーラビリティの傾向
調査が実施されたH/
WはおよびS/ Wは次のとおりです。 - S/
W: FreeBSD 8. 0 amd64 - S/
W: PostgreSQL 8. 4 - S/
W: pgbench - H/
W: Quad Xeon 5405 - H/
W: 4GB mem
調査の組み合わせは次のとおりです。
- TPC-B-like md(4)ベース
(非同期マウント) - TPC-B-like tmpfs(5)ベース
- SELECT-only md(4)ベース
(非同期マウント) - SELECT-only tmpfs(5)ベース
ベンチマーク結果は次のとおりです。
この結果から次のようなことが読み取れます。
(このベンチマークの状況においてという前置きがつきますが) メモリディスクとしてはmd(4)よりもtmpfs(5)の方が優れた性能を発揮する - このシステムにきわめて高速なストレードドライブを用意して、
ディスクバックエンドで同様の試験を実施した場合のパフォーマンス上限はmd(4)やtmpfs(5)が示す結果のあたりまで - コア8のシステムにおいては8クライアントまではスケールするものの、
その後はパフォーマンスが劣化している。同時にアイドルタイムが60%まで増えるという現象が観測されたという説明があることから、 コンテンションが発生している可能性がある。その場合、 該当するコンテンションを解消することでパフォーマンスが劣化する部分の性能改善が期待できる
tmpfs(5)はmd(4)よりも高速に動作するメモリファイルシステムとして導入されました。Ivan Voras氏の紹介しているこのベンチマークはmd(4)とtmpfs(5)の性能差を示す興味深いサンプルだといえます。ただし、
tmpfs(5)にはまだバグがあることも知られており、 安定した動作を求める場合にはまだmd(4)のほうが安全な選択肢です。 通常のディスクよりもキャッシュ効果を得られるディスクを実現する方法として、
md(5)をスワップバックエンドで使うという方法があります。tmpfs(5)もmd(4)も実現している特性が違いますので、 それぞれ求められるシステム性能に応じたメモリディスクを活用すればいいということがいえます。