2011年4月 7日

[pgsql-jp: 40731]statsrepo.activity の単位について

高松です。

先日はpg_statsifoについてアドバイスをありがとうございました。

もうひとつ、質問させてください。
時間あたりのセッション数のグラフを作りたいと考えております。

statsrepo.activity表の (idle+waiting+running) がそうかなと

思ったのですが、表に入っている値をみるとどうも違うみたいなのです。

lib/libstatsinfo.cをみると、
プロセス数を取得して、サンプル数で割った値が
入っているようなのですが、この割り算の意味がわかりません。。。

セッション数の求め方と、割り算の意味について
教えて頂けませんでしょうか。

どうぞよろしくお願いいたします。


     /*
* sample idle transactions
*/
if (be->st_procpid == MyProcPid)
; /* exclude myself */
else if (be->st_waiting)
waiting++;
else if (be->st_activity[0] != '\0')
{
if (strcmp(be->st_activity, "<IDLE>") == 0)
idle++;
else if (strcmp(be->st_activity, "<IDLE> in transaction") == 0)
idle_in_xact++;
else
running++;
}
(中略)


stats->idle += idle;
stats->idle_in_xact += idle_in_xact;
stats->waiting += waiting;
stats->running += running;

stats->samples++;


(中略)

/* Build a tuple descriptor for our result type */
if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
elog(ERROR, "return type must be a row type");

Assert(tupdesc->natts == lengthof(values));

if (stats != NULL && stats->samples > 0)
{
double samples = stats->samples;

memset(nulls, 0, sizeof(nulls));

i = 0;
values[i++] = Float8GetDatum(stats->idle / samples);
values[i++] = Float8GetDatum(stats->idle_in_xact / samples);
values[i++] = Float8GetDatum(stats->waiting / samples);
values[i++] = Float8GetDatum(stats->running / samples);


投稿者 xml-rpc : 2011年4月 7日 22:58
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/103020
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。