Re: [Patch] Optimize dropping of relation buffers using dlist

Поиск
Список
Период
Сортировка
От Kyotaro Horiguchi
Тема Re: [Patch] Optimize dropping of relation buffers using dlist
Дата
Msg-id 20201022.154846.1787169636291470089.horikyota.ntt@gmail.com
обсуждение исходный текст
Ответ на Re: [Patch] Optimize dropping of relation buffers using dlist  (Thomas Munro <thomas.munro@gmail.com>)
Список pgsql-hackers
At Thu, 22 Oct 2020 18:54:43 +1300, Thomas Munro <thomas.munro@gmail.com> wrote in 
> On Thu, Oct 22, 2020 at 5:52 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
> > Per the referenced bug-reporting thread, it was ReiserFS and/or NFS on
> > SLES 9.3; so, dubious storage choices on an ancient-even-then Linux
> > kernel.
> 
> Ohhhh.  I can reproduce that on a modern Linux box by forcing
> writeback to a full NFS filesystem[1], approximately as the kernel
> does asynchronously when it feels like it, causing the size reported
> by SEEK_END to go down.

<test code>

> $ cc magic_shrinking_file.c
> $ ./a.out
> lseek(..., SEEK_END) = 9670656
> write(...)  = 8192
> lseek(..., SEEK_END) = 9678848
> fsync(...) = -1
> lseek(..., SEEK_END) = 9670656

Interesting..

> > I think the takeaway point is not so much that that particular bug
> > might recur as that storage infrastructure does sometimes have bugs.
> > If you're wanting to introduce new assumptions about what the filesystem
> > will do, it's prudent to think about how badly will we break if the
> > assumptions fail.
> 
> Yeah.  My point was just that the caching trick doesn't seem to
> improve matters on this particular front, it can just cache a bogus
> value.
> 
> [1] https://www.postgresql.org/message-id/CAEepm=1FGo=ACPKRmAxvb53mBwyVC=TDwTE0DMzkWjdbAYw7sw@mail.gmail.com

As I wrote in another branch of this thread, the requirement here is
making sure that we don't have a buffer for blocks after the file size
known to the process. Even if the cache gets a bogus value at the
first load, it's still true that we don't have a buffers for blocks
after that size. There's no problem as far as DropRelFileNodeBuffers
doesn't get a smaller value from smgrnblocks than the size the server
thinks.

regards.

-- 
Kyotaro Horiguchi
NTT Open Source Software Center



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Thomas Munro
Дата:
Сообщение: Re: [Patch] Optimize dropping of relation buffers using dlist
Следующее
От: Michael Paquier
Дата:
Сообщение: Re: [patch] Fix checksum verification in base backups for zero page headers