未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

oprofile

日本OSS推進フォーラムのサーバ部会の性能評価のプロジェクトも佳境を迎えつつある。各種ベンチマークデータもそろいプロジェクトメンバーと毎週毎週がしがし議論を重ねている。先日はUN社の16CPUマシンでのスケーラビリティ検証データのレビューなどをプロジェクトメンバとやったが非常に楽しかった。
UN社はメインフレームの老舗U社の子会社ではあるがビジネスはSIとかサービスなので必ずしもOSとかRDBMSそのものに専門性があるというわけではない。PostgreSQLと言えば、各社にもそこそこPostgreSQLのコードを読んだことがある人はいるけど、業界的にはSRAの石井さんが重鎮になっている。石井さんを交えoprofileデータを分析した。
わたしなんかはPostgreSQLに関してはド素人、だけど昔は某社製RDBMSを開発していたから、そこそこ土地鑑はある。
RDBMSの性能があがらないのは、

  • ロック競合
  • RDBMSの検索アルゴリズムが悪い。(適切な索引が選ばれていなかったり、適切な索引が作成されていない)
  • IOネック

等々いろいろ考えられる。性能上のボトルネックを知るにはoprofileが最も手軽で精密なデータを提供してくれる。そのデータの調査の流れは以下のような感じになる。

  • HTをON/OFFして、それぞれのoprofile(実行プロファイリング)データを取得する。
  • oprofileデータを比較し、顕著な差を発見する。
  • 発見した部位のソースコードを眺め原因を推測する。
  • 仮説を立て、問題を解決すると予想される解決策を検証してみる。
  • 上記を仮説が立証されるまで繰り返す。

上記のプロセスは誰でも再現可能なので極めて工学的(?)なアプローチだと言える。
わたしは当該プロジェクトのoprofile担当みたいな役回りになってきて、各社さんが取得したoprofileデータをひたすら眺めるわけであるが、いくつも見ているとだんだんデータの解析の王道みたいなのが見えてくる。その分析手法が徐々に人々に知られるようになると面白いなあなどと思っている。