Re: increasing the default WAL segment size

From: David Rowley <david(dot)rowley(at)2ndquadrant(dot)com>
To: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
Cc: Jim Nasby <Jim(dot)Nasby(at)bluetreble(dot)com>, PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>, Beena Emerson <memissemerson(at)gmail(dot)com>
Subject: Re: increasing the default WAL segment size
Date: 2017-01-05 04:03:31
Message-ID: CAKJS1f9GaOSB8FUOL7zXMYeqt2WSmuSr9v7eUUTEKueq7WQk1A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 4 January 2017 at 01:16, Michael Paquier <michael(dot)paquier(at)gmail(dot)com> wrote:
> On Tue, Jan 3, 2017 at 6:23 AM, Jim Nasby <Jim(dot)Nasby(at)bluetreble(dot)com> wrote:
>> + /* Check if wal_segment_size is in the power of 2 */
>> + for (i = 0;; i++, pow2 = pow(2, i))
>> + if (pow2 >= wal_segment_size)
>> + break;
>> +
>> + if (wal_segment_size != 1 && pow2 > wal_segment_size)
>> + {
>> + fprintf(stderr, _("%s: WAL segment size must be in the power of 2\n"), progname);
>> + exit(1);
>> + }
>
> I recall taht pow(x, 2) and x * x result usually in the same assembly
> code, but pow() can never be more optimal than a simple
> multiplication. So I'd think that it is wiser to avoid it in this code
> path. Documentation is missing for the new replication command
> SHOW_WAL_SEG. Actually, why not just having an equivalent of the SQL
> command and be able to query parameter values?

This would probably be nicer written using a bitwise trick to ensure
that no lesser significant bits are set. If it's a power of 2, then
subtracting 1 should have all the lesser significant bits as 1, so
binary ANDing to that should be 0. i.e no common bits.

Something like:

/* ensure segment size is a power of 2 */
if ((wal_segment_size & (wal_segment_size - 1)) != 0)
{
fprintf(stderr, _("%s: WAL segment size must be in the power of
2\n"), progname);
exit(1);
}

There's a similar trick in bitmapset.c for RIGHTMOST_ONE, so looks
like we already have assumptions about two's complement arithmetic

--
David Rowley http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Ashutosh Bapat 2017-01-05 04:10:39
Previous Message Ashutosh Bapat 2017-01-05 03:56:11 Re: ALTER TABLE parent SET WITHOUT OIDS and the oid column