Re: SLRU statistics

From: Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com>
To: Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>
Cc: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Masahiko Sawada <masahiko(dot)sawada(at)2ndquadrant(dot)com>, "tsunakawa(dot)takay(at)fujitsu(dot)com" <tsunakawa(dot)takay(at)fujitsu(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: SLRU statistics
Date: 2020-05-02 06:56:07
Message-ID: 49b8ad17-f6d9-a086-a952-ff1fec3ac1b3@oss.nttdata.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2020/05/02 9:08, Tomas Vondra wrote:
> On Fri, May 01, 2020 at 11:49:51AM +0900, Fujii Masao wrote:
>>
>>
>> On 2020/05/01 3:19, Tomas Vondra wrote:
>>> On Fri, May 01, 2020 at 03:02:59AM +0900, Fujii Masao wrote:
>>>>
>>>>
>>>> On 2020/04/02 9:41, Tomas Vondra wrote:
>>>>> Hi,
>>>>>
>>>>> I've pushed this after some minor cleanup and improvements.
>>>>
>>>> +static char *slru_names[] = {"async", "clog", "commit_timestamp",
>>>> +                              "multixact_offset", "multixact_member",
>>>> +                              "oldserxid", "pg_xact", "subtrans",
>>>> +                              "other" /* has to be last */};
>>>>
>>>> When I tried pg_stat_slru, I found that it returns a row for "pg_xact".
>>>> But since there is no "pg_xact" slru ("clog" slru exists instead),
>>>> "pg_xact" should be removed? Patch attached.
>>>>
>>>
>>> Yeah, I think I got confused and accidentally added both "clog" and
>>> "pg_xact". I'll get "pg_xact" removed.
>>
>> Thanks!
>>
>
> OK, pushed. Thanks!

Thanks a lot!

But, like the patch that I attached in the previous email does,
"pg_xact" should be removed from the description of pg_stat_reset_slru()
in monitoring.sgml.

>> Another thing I found is; pgstat_send_slru() should be called also by
>> other processes than backend? For example, since clog data is flushed
>> basically by checkpointer, checkpointer seems to need to send slru stats.
>> Otherwise, pg_stat_slru.flushes would not be updated.
>>
>
> Hmmm, that's a good point. If I understand the issue correctly, the
> checkpointer accumulates the stats but never really sends them because
> it never calls pgstat_report_stat/pgstat_send_slru. That's only called
> from PostgresMain, but not from CheckpointerMain.

Yes.

> I think we could simply add pgstat_send_slru() right after the existing
> call in CheckpointerMain, right?

Checkpointer sends off activity statistics to the stats collector in
two places, by calling pgstat_send_bgwriter(). What about calling
pgstat_send_slru() just after pgstat_send_bgwriter()?

In previous email, I mentioned checkpointer just as an example.
So probably we need to investigate what process should send slru stats,
other than checkpointer. I guess that at least autovacuum worker,
logical replication walsender and parallel query worker (maybe this has
been already covered by parallel query some mechanisms. Sorry I've
not checked that) would need to send its slru stats.

Atsushi-san reported another issue in pg_stat_slru.
You're planning to work on that?
https://postgr.es/m/CACZ0uYFe16pjZxQYaTn53mspyM7dgMPYL3DJLjjPw69GMCC2Ow@mail.gmail.com

Regards,

--
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Eisentraut 2020-05-02 08:01:54 Re: Unify drop-by-OID functions
Previous Message Thomas Munro 2020-05-02 03:53:20 Re: pgsql: Rationalize GetWalRcv{Write,Flush}RecPtr().