[pgsql-jp: 40731] statsrepo.activity の単位について
yoyo takamatsu
takamatsuyooko @ gmail.com
2011年 4月 7日 (木) 22:58:32 JST
高松です。
先日は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);
pgsql-jp メーリングリストの案内