From: Tom Lane on
Magnus Hagander <magnus(a)hagander.net> writes:
> On Wed, Feb 17, 2010 at 06:55, Fujii Masao <masao.fujii(a)gmail.com> wrote:
>> 2. Straightforwardly observe the alignment rule. Since the received WAL
>> � data might start at the middle of WAL block, walreceiver needs to keep
>> � the last half-written WAL block for alignment. OTOH since the received
>> � data might end at the middle of WAL block, walreceiver needs zero-padding.
>> � As a result, walreceiver writes the set of the last WAL block, received
>> � data and zero-padding.

> May there be other reasons to d this as well?

Writing misaligned data is certain to be expensive even when it works...

regards, tom lane

--
Sent via pgsql-hackers mailing list (pgsql-hackers(a)postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

From: Fujii Masao on
On Wed, Feb 17, 2010 at 3:03 PM, Magnus Hagander <magnus(a)hagander.net> wrote:
> In that case, O_DIRECT would be counterproductive, no? It maps to
> FILE_FLAG_NOI_BUFFERING, which makes sure it doesn't go into the
> cache. So the read in the startup proc is actually guaranteed to
> reuqire a physical read - of something we just wrote, so it'll almost
> certainly end up waiting for a rotation, no?
>
> Seems like getting rid of O_DIRECT here is the right thing to do,
> regardless of this.

Agreed. I'll remove O_DIRECT from walreceiver.

Regards,

--
Fujii Masao
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center

--
Sent via pgsql-hackers mailing list (pgsql-hackers(a)postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

From: Fujii Masao on
On Wed, Feb 17, 2010 at 3:27 PM, Tom Lane <tgl(a)sss.pgh.pa.us> wrote:
> Magnus Hagander <magnus(a)hagander.net> writes:
>> On Wed, Feb 17, 2010 at 06:55, Fujii Masao <masao.fujii(a)gmail.com> wrote:
>>> 2. Straightforwardly observe the alignment rule. Since the received WAL
>>>   data might start at the middle of WAL block, walreceiver needs to keep
>>>   the last half-written WAL block for alignment. OTOH since the received
>>>   data might end at the middle of WAL block, walreceiver needs zero-padding.
>>>   As a result, walreceiver writes the set of the last WAL block, received
>>>   data and zero-padding.
>
>> May there be other reasons to d this as well?
>
> Writing misaligned data is certain to be expensive even when it works...

Yeah, right. After I remove O_DIRECT, I'll change walreceiver so as to
do an alignment correctly, and then I'll test the performance.

Regards,

--
Fujii Masao
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center

--
Sent via pgsql-hackers mailing list (pgsql-hackers(a)postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

From: Fujii Masao on
On Wed, Feb 17, 2010 at 4:07 PM, Fujii Masao <masao.fujii(a)gmail.com> wrote:
> On Wed, Feb 17, 2010 at 3:03 PM, Magnus Hagander <magnus(a)hagander.net> wrote:
>> In that case, O_DIRECT would be counterproductive, no? It maps to
>> FILE_FLAG_NOI_BUFFERING, which makes sure it doesn't go into the
>> cache. So the read in the startup proc is actually guaranteed to
>> reuqire a physical read - of something we just wrote, so it'll almost
>> certainly end up waiting for a rotation, no?
>>
>> Seems like getting rid of O_DIRECT here is the right thing to do,
>> regardless of this.
>
> Agreed. I'll remove O_DIRECT from walreceiver.

Here is the patch to do that.

Regards,

--
Fujii Masao
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center
From: Magnus Hagander on
2010/2/16 Fujii Masao <masao.fujii(a)gmail.com>:
> On Tue, Feb 16, 2010 at 7:20 PM, Magnus Hagander <magnus(a)hagander.net> wrote:
>> 2010/2/16 Fujii Masao <masao.fujii(a)gmail.com>:
>>> On Tue, Feb 16, 2010 at 12:37 AM, Magnus Hagander <magnus(a)hagander.net> wrote:
>>>> With the libpq fixes, I get further (more on that fix later, btw), but
>>>> now I get stuck in this. When I do something on the master that
>>>> generates WAL, such as insert a record, and then try to query this on
>>>> the slave, the walreceiver process crashes with:
>>>>
>>>> PANIC:  XX000: could not write to log file 0, segment 9 at offset 0, length 160:
>>>>  Invalid argument
>>>> LOCATION:  XLogWalRcvWrite, .\src\backend\replication\walreceiver.c:487
>>>>
>>>> I'll keep digging at the details, but if somebody has a good idea here... ;)
>>>
>>> Yeah, this problem was reproduced in my (very slow :-( ) MinGW environment, too.
>>> Though I've not idenfied the cause yet, I guess that it derives from wrong use
>>> of the type of local variables in XLogWalRcvWrite(). I'll continue investigation
>>> of it.
>>
>> Thanks!
>>
>> I will be somewhat spottily available over the next two days due to
>> on-site work with clients.
>>
>> Let me know if you would be helped by some details of how to get a
>> (somewhat faster) EC2 image up and running with MSVC to test on :-)
>
> Thanks! I can probably use the EC2 image by reading your great blog post.
> http://blog.hagander.net/archives/151-Testing-PostgreSQL-patches-on-Windows-using-Amazon-EC2.html

Actually, that one deosn't work anymore, because I managed to break
the image :-)

If you send me your amazon id, I can get you premissions on my private
image. I plan to clean it up and make it public, just haven't gotten
around to it yet...

--
Magnus Hagander
Me: http://www.hagander.net/
Work: http://www.redpill-linpro.com/

--
Sent via pgsql-hackers mailing list (pgsql-hackers(a)postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers