Re: Better way of dealing with pgstat wait timeout during buildfarm runs?

From: Tomas Vondra <tv(at)fuzzy(dot)cz>
To: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Better way of dealing with pgstat wait timeout during buildfarm runs?
Date: 2014-12-25 21:52:42
Message-ID: 549C872A.8010002@fuzzy.cz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 25.12.2014 22:16, Tom Lane wrote:
> Tomas Vondra <tv(at)fuzzy(dot)cz> writes:
>> On 25.12.2014 20:36, Tom Lane wrote:
>>> BTW, I notice that in the current state of pgstat.c, all the logic
>>> for keeping track of request arrival times is dead code, because
>>> nothing is actually looking at DBWriteRequest.request_time.
>
>> Really? Which part of the code is dead? I see pgstat_recv_inquiry() is
>> updating the request_time after receiving the inquiry, and
>> pgstat_db_requested() is looking at it when writing the files.
>
> Where is pgstat_db_requested() looking at request_time?

Oh, right. pgstat_db_requested() is not looking at the timestamp - it
only checks the OID of the database. But pgstat_recv_inquiry() is
checking it, comparing it to cutoff_time etc.

ISTM the main change related to this is that this:

if (last_statwrite < last_statrequest)
pgstat_write_statsfile(false);

got replaced by this:

if (pgstat_write_statsfile_needed())
pgstat_write_statsfiles(false, false);

where pgstat_write_statsfile_needed() only checks if the list is empty
(and ignores the request/write timestamps).

If I understand that correctly, this can would lead to writing the files
more often, and we're dealing with a timeout.

>> If we can simplify the code by keeping just OIDs, let's do that. I think
>> the main reason why we haven't done that in 187492b6 was to keep as much
>> of the existing logic (and maybe change it in a separate patch).
>
> The real point here is that I think that commit *already* changed
> the existing logic, because the time-of-receipt used to matter. In
> particular, there used to be a throttle on how often the stats file
> could get written, which seems to have vanished. I seriously doubt
> that that was a good change, especially on
> write-bandwidth-challenged platforms.

Yes - if that change causes writing the files being written more
frequently, it's not a good change.

But I think the time-of-receipt still matters - pgstat_recv_inquiry
logic remained the same, just applied per database. ISTM the only thing
that disappeared is the (last_statwrite < last_statrequest) check.

I have to think about this a bit more, I haven't seen this code since
the split patch.

Tomas

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tomas Vondra 2014-12-25 22:10:42 Re: Better way of dealing with pgstat wait timeout during buildfarm runs?
Previous Message Tom Lane 2014-12-25 21:40:48 Re: Better way of dealing with pgstat wait timeout during buildfarm runs?