第71回カーネル読書会 CC-Optimizer
横浜Linuxユーザグループのカーネル読書会が新橋・汐留のミラクル・リナックスさんで開催されたので参加しました。 看板はカーネル読書会ですが、今回のお題はカーネルでなく PostgreSQL の CC optimizer について。 BOというデータベースでの SELECT時のコードがCPUのL1キャッシュに乗り切らないときに、L1キャッシュに乗るサイズに分けてみたらキャッシュヒットして早くなる、という賢い実装があるのだが、すべての場合にBOが有効というわけではないため、BOが有効と思われる状況の場合にBOを使うように optimizer を組む、ということだそうです。(ん、なんかかなりいい加減な説明だ) そもそもBOの実装のソースコードが公開されていないそうで、論文「Buffering databse operations for enhanced instruction cache performance」を参考にして実装されたんだそうで。
現状のPostgreSQLの変更量としてはコメント含めて300行ぐらいで、実時間でチューニング具合を測定してみたところ、最大で3割早くなったとかのレポートがあったりしたのですが、「CPUのL1キャッシュヒットとかの話ならば vtune などを使って測定したほうが、速くなった本当の原因をつかめるかもね」「ある程度実装できたら、学会や発表会などに出て行って、いろいろな人たちの目の当たりになる場所に出したりオープンソースにして、どんどん広げてよ」「300行の改良で、ピークで3割良くなったっていうのはすばらしい」などの意見がありました。 その後のピザ+ビールを飲みながらの時には、マルチスレッドのときのL1キャッシュのヒットとかってどうなのよ、とか、「いまどきのファイルシステムって journal 持っているんだから、あとは write さえ速ければ、RDBMS内での非同期IOとか苦労がいらなくなるの?」とかの技術話で盛り上がっていました。
今後の予定では TOMOYO Linux や RT Linux についてのお話がありそうです。
コメント
コメントを投稿