Re: Possible Bug: high CPU usage for stats collector in 8.2 - Mailing list pgsql-hackers

From Andrew Dunstan
Subject Re: Possible Bug: high CPU usage for stats collector in 8.2
Date
Msg-id 45E73575.90706@dunslane.net
Whole thread Raw
In response to Re: Possible Bug: high CPU usage for stats collector in 8.2  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Possible Bug: high CPU usage for stats collector in 8.2  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
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





pgsql-hackers by date:

Previous
From: Josh Berkus
Date:
Subject: Re: Google SoC: lots of discussion, very few mentors
Next
From: Tom Lane
Date:
Subject: Re: Possible Bug: high CPU usage for stats collector in 8.2