SE-PostgreSQLベンチマーク

たぶんOSC2007で使うことになるであろうネタ。
PostgreSQL vs SE-PostgreSQL の実行性能を計測してみた。

ベンチマークに利用したのは pgbenchで、PostgreSQLの人たちの間では標準的に利用されているTP
実は、以前YLUGカーネル読書会の前にもパフォーマンスを計測したことがあったのだが、どうやらその測り方は良くなかったらしい。
pgsql-hackersの過去ログを眺めていると、Tom Laneが「Scaling Factorがクライアント数よりも少ないときは、それは単にタスクスイッチの性能を測っているだけだ」と言っていたのに納得して、再計測してみた。

今度は、計測する毎にScaling Factor(=データベース規模)を変化させてみた。すると、測定結果は意外と悪くない。SF = 2 の時で約10%程度のデグレード。データベース規模が大きいときは、共有バッファにテーブルが乗り切らず、ディスクI/Oが発生するために、差はほとんど無くなる。
素晴らしい、SE-PostgreSQLのUserspace AVCを頑張って実装した甲斐があったというものだ。

[測定環境]
CPU: Core2Duo E6400
Mem: 1GB
HDD: SATAの普通のHDD
(*) PostgreSQL/SE-PostgreSQLのパラメータは、shared_bufferを512MBに設定した意外は全てデフォルト値
(*) 測定のたびに VACUUM FULL; を実行(-vオプションによる)