JPUG Newbie Hackerson 伊東

JPUG Newbie Hackerson 伊東に参加してきましたよ。

今回の参加者は7名(坂田さん@座長、大山さん@幹事、澤田さん@講師、Amitさん@副講師、喜田さん、大川さん、ぬこ)。
講師の 澤田さん が9.5, 9.6に対する機能追加のパッチと、レビュー観点を事前に用意してくれたので
あまりgdgdになることなく合宿を進められたのかなと。

前半

  • 前半は澤田さんから、コミュニティ開発の流れ、Gitによるリポジトリからのソース入手、パッチの当て方、デバッグ方法などの説明。
  • gdbのtipsや、gitのtipsなども自分にとってはかなり有用な情報だった。

後半

  • 後半は、澤田さんが用意したパッチの例を元に、レビューや検証を各自で実施。

自分がやった課題(5_sample_rate_to_auto_explain)

  • 澤田さんから提示された観点
    • 本当に負荷が下がっているか?
    • その代わりにどこかの負荷が上がっていないか?
    • サンプリングの機能はちゃんと動くか?
    • デフォルトはどうするか?ないが最適か?
    • 他のモジュールと組み合わせても問題なく動くか?
  • まず、メールとパッチ後ソースから仕様を把握
    • random()とsample_ratioを比較して、sample_ratioを上回ったら

explain analyze情報の収集と出力をスキップする、という改造っぽい。

  • make check
    • 何も動かない・・・auto_explainにはリグレッションテストが実装されてなかった。(ノ∀`)
[nuko@localhost auto_explain]$ make check
rm -rf '/home/nuko/src/postgresql'/tmp_install
/usr/bin/mkdir -p '/home/nuko/src/postgresql'/tmp_install/log
make -C '../..' DESTDIR='/home/nuko/src/postgresql'/tmp_install install >'/home/nuko/src/postgresql'/tmp_install/log/install.log 2>&1
  • ratioにより負荷が軽減するというのをpgbenchで確認。

が、sample_ratioが1.0が0.75よりもusが小さい理由は、追いきれてない。

  • ratioによってログ出力量が減少するのは確認できた。


  • パラメータのデフォルト値
    • contrib/auto_explainのauto_explain.log_analyze パラメータ、

実は9.6で提案されている auto_explain.sample_ratio で代替できたりしないかなー。

    • で、デフォルト値を0にしておく ⇒ auto_explain.log_analyze = false と実質同じ。
    • でも互換性を考えると、auto_explain.log_analyze パラメータを残さざるをえないのかなあ。
    • ⇒澤田さんコメント:contribだったら、互換性をなくすという提案もありかも?
  • 他のモジュールと組み合わせても問題なく動くか?
    • Executor_Run_hookを使っている、俺々HOOKモジュール(pg_sulog)と、auto_explainを組み合わせて、相互の機能が動作するか確認。
    • shared_preload_libraries = 'pg_sulog,auto_explain'のパターンと
    • shared_preload_libraries = 'auto_explain,pg_sulog'

を検証。こういうときに自分で作った拡張モジュールがあると、いろいろ捗る。

  • ソースやドキュメントのtypoチェック
    • ざっと見したけど見つからず。

おまけ

  • 今回の合宿場所は「山喜旅館」
    • 旧い建物だけど、しっかりWifiは使える。
    • 会議室が安いというのが選択理由
    • お風呂が24時間使えるのも自分のような風呂スキーには嬉しい。
飯について

  • 宿の食事は簡素だけど、悪くはなかった。伊東といったらやっぱり干物だよなー。