Обсуждение: Error in 9.6 documentation? checkpoint_flush_after

Поиск
Список
Период
Сортировка

Error in 9.6 documentation? checkpoint_flush_after

От
PG Doc comments form
Дата:
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/9.6/runtime-config-wal.html
Description:

https://www.postgresql.org/docs/9.6/runtime-config-wal.html
19.5.2

checkpoint_flush_after (integer)

    Whenever more than checkpoint_flush_after bytes have been written while
performing a checkpoint, attempt to force the OS to issue these writes to
the ...

bytes or pages?tgresql.conf says pages

Re: Error in 9.6 documentation? checkpoint_flush_after

От
Bruce Momjian
Дата:
On Fri, Mar  1, 2019 at 05:58:21AM +0000, PG Doc comments form wrote:
> The following documentation comment has been logged on the website:
> 
> Page: https://www.postgresql.org/docs/9.6/runtime-config-wal.html
> Description:
> 
> https://www.postgresql.org/docs/9.6/runtime-config-wal.html
> 19.5.2
> 
> checkpoint_flush_after (integer)
> 
>     Whenever more than checkpoint_flush_after bytes have been written while
> performing a checkpoint, attempt to force the OS to issue these writes to
> the ...
> 
> bytes or pages? postgresql.conf says pages

You bring up a good point.  This problem affects these postgresql.conf
variables:

    bgwriter_flush_after
    backend_flush_after
    checkpoint_flush_after

and probably more.  The issue is that the value is in bytes, as opposed
to a value of time, like milliseconds.  You can specify the bytes in
terms of the number of pages, e.g., 2 = 16kB, or you can specify it
directly in bytes, e.g., 32kB.

The line in postgresql.conf is saying:

    #checkpoint_flush_after = 256kB         # measured in pages, 0 disables
                                              -----------------

if you specify a number like:

    checkpoint_flush_after = 12

that is 12 * 8kB or 96kB.  If you specify an actual byte amount like
256kB, that is the value that is used.

Do you have any suggestions on how this could be made clearer?

-- 
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

+ As you are, so once was I.  As I am, so you will be. +
+                      Ancient Roman grave inscription +


Re: Error in 9.6 documentation? checkpoint_flush_after

От
Andres Freund
Дата:
Hi,

On 2019-03-05 11:05:31 -0500, Bruce Momjian wrote:
> On Fri, Mar  1, 2019 at 05:58:21AM +0000, PG Doc comments form wrote:
> > The following documentation comment has been logged on the website:
> > 
> > Page: https://www.postgresql.org/docs/9.6/runtime-config-wal.html
> > Description:
> > 
> > https://www.postgresql.org/docs/9.6/runtime-config-wal.html
> > 19.5.2
> > 
> > checkpoint_flush_after (integer)
> > 
> >     Whenever more than checkpoint_flush_after bytes have been written while
> > performing a checkpoint, attempt to force the OS to issue these writes to
> > the ...
> > 
> > bytes or pages? postgresql.conf says pages

It's bytes, rounded to pages. Describing it as pages is too complicated
because we'd need to reference the block size for it to make sense etc.
What's the problem with describing it in bytes?


> You bring up a good point.  This problem affects these postgresql.conf
> variables:
> 
>     bgwriter_flush_after
>     backend_flush_after
>     checkpoint_flush_after
> 
> and probably more.  The issue is that the value is in bytes, as opposed
> to a value of time, like milliseconds.  You can specify the bytes in
> terms of the number of pages, e.g., 2 = 16kB, or you can specify it
> directly in bytes, e.g., 32kB.

I'm not following? Why is bytes vs time a problem? We have similar
base-unit issues in plenty time based GUCs?

Greetings,

Andres Freund


Re: Error in 9.6 documentation? checkpoint_flush_after

От
Bruce Momjian
Дата:
On Tue, Mar  5, 2019 at 09:11:14AM -0800, Andres Freund wrote:
> Hi,
> 
> On 2019-03-05 11:05:31 -0500, Bruce Momjian wrote:
> > On Fri, Mar  1, 2019 at 05:58:21AM +0000, PG Doc comments form wrote:
> > > The following documentation comment has been logged on the website:
> > > 
> > > Page: https://www.postgresql.org/docs/9.6/runtime-config-wal.html
> > > Description:
> > > 
> > > https://www.postgresql.org/docs/9.6/runtime-config-wal.html
> > > 19.5.2
> > > 
> > > checkpoint_flush_after (integer)
> > > 
> > >     Whenever more than checkpoint_flush_after bytes have been written while
> > > performing a checkpoint, attempt to force the OS to issue these writes to
> > > the ...
> > > 
> > > bytes or pages? postgresql.conf says pages
> 
> It's bytes, rounded to pages. Describing it as pages is too complicated
> because we'd need to reference the block size for it to make sense etc.
> What's the problem with describing it in bytes?

Well, if postgrsql.conf has:

    checkpoint_flush_after = 2

it is intepreted in pages and output as bytes:

    SHOW checkpoint_flush_after;
     checkpoint_flush_after
    ------------------------
     16kB

> > You bring up a good point.  This problem affects these postgresql.conf
> > variables:
> > 
> >     bgwriter_flush_after
> >     backend_flush_after
> >     checkpoint_flush_after
> > 
> > and probably more.  The issue is that the value is in bytes, as opposed
> > to a value of time, like milliseconds.  You can specify the bytes in
> > terms of the number of pages, e.g., 2 = 16kB, or you can specify it
> > directly in bytes, e.g., 32kB.
> 
> I'm not following? Why is bytes vs time a problem? We have similar
> base-unit issues in plenty time based GUCs?

I am only pointing out that pages and literal bytes are all bytes, while
wal_writer_delay is time, e.g., 200ms.

-- 
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

+ As you are, so once was I.  As I am, so you will be. +
+                      Ancient Roman grave inscription +