On Sep 20, 2022, 20:49 +0800, Melih Mutlu <m.melihmutlu@gmail.com>, wrote:
Hi Zhang,
Those are two different locks. The locks that are taken in the patch are for buffer headers. This locks only the current buffer and makes that particular buffer's info consistent within itself.
However, the lock mentioned in the doc is for buffer manager which would prevent changes on any buffer if it's held. pg_buffercache_summary (and pg_buffercache_pages) does not hold buffer manager lock. Therefore, consistency across all buffers is not guaranteed.
For pg_buffercache_pages, self-consistent buffer information is useful since it shows each buffer separately.
For pg_buffercache_summary, even self-consistency may not matter much since results are aggregated and we can't see individual buffer information. Consistency across all buffers is also not a concern since its purpose is to give an overall idea about the state of buffers.
I see that these two different locks in the same context can be confusing. I hope it is a bit more clear now.