Tom Lane wrote:
> Darcy Buskermolen <darcyb@commandprompt.com> writes:
>
>> I'm observing high CPU usage (95%) of a 2.6GHz opteron by the stats
>> collector on an 8.2.3 box investigation has lead me to belive that the
>> stats file is written a lot more often that once every 500ms the
>> following shows this behavior.
>>
>
> Looks like someone broke the usage of PGSTAT_STAT_INTERVAL between 8.1
> and 8.2 ... it's waiting 500 microseconds, not the intended 500
> milliseconds.
>
Good catch. I am also a bit dubious about this code:
input_fd.fd = pgStatSock; input_fd.events = POLLIN | POLLERR; input_fd.revents = 0;
if (poll(&input_fd, 1, PGSTAT_SELECT_TIMEOUT * 1000) < 0) { if (errno == EINTR)
continue; ereport(ERROR, (errcode_for_socket_access(), errmsg("poll()
failedin statistics collector: %m"))); }
got_data = (input_fd.revents != 0);
AIUI you are not supposed to put POLLERR in the events field. We should
probably be setting POLLIN | POLLPRI, and we should also probably check
exactly what event was returned in revents.
cheers
andrew