Checkpoints and buffers that are hint-bit-dirty
When we checkpoint we write out all dirty buffers. But ISTM we don't really
need to write out buffers which are dirty but which have an LSN older than the
previous checkpoint. Those represent buffers which were dirtied by a
non-wal-logged modification, ie, hint bit setting. The other non-wal-logged
operations will sync the buffer themselves when they're done.
I guess it doesn't really buy much, probably just a slight delay in writing
out the page until bgwriter gets around to it. Conceivably you could have a
hot buffer with many missing hint bits which will get written out on several
checkpoints but how many of those can you have? And extending the checkpoint
doesn't seem like much of a concern. On the other hand it wouldn't be hard to
check would it?
--
Gregory Stark
EnterpriseDB http://www.enterprisedb.com
Gregory Stark <stark@enterprisedb.com> writes:
When we checkpoint we write out all dirty buffers. But ISTM we don't really
need to write out buffers which are dirty but which have an LSN older than the
previous checkpoint. Those represent buffers which were dirtied by a
non-wal-logged modification, ie, hint bit setting. The other non-wal-logged
operations will sync the buffer themselves when they're done.
In the current dispensation we don't really care how long a checkpoint
takes, so I don't see the advantage to be gained.
regards, tom lane
"Tom Lane" <tgl@sss.pgh.pa.us> writes:
Gregory Stark <stark@enterprisedb.com> writes:
When we checkpoint we write out all dirty buffers. But ISTM we don't really
need to write out buffers which are dirty but which have an LSN older than the
previous checkpoint. Those represent buffers which were dirtied by a
non-wal-logged modification, ie, hint bit setting. The other non-wal-logged
operations will sync the buffer themselves when they're done.In the current dispensation we don't really care how long a checkpoint
takes, so I don't see the advantage to be gained.
I agree that just a shifting of i/o to the checkpoint from bgwriter isn't
interesting.
Saving i/o is still i/o saved -- if it doesn't shorten the checkpoint it
reduces its i/o bandwidth demands. But again, I couldn't come up with any
realistic scenario where the actual i/o saved is anything more than a token
amount. I thought I would toss the idea up in case I was missing something.
--
Gregory Stark
EnterpriseDB http://www.enterprisedb.com