Re: Figuring out shared buffer pressure
Bruce Momjian <bruce@momjian.us>
From: Bruce Momjian <bruce@momjian.us>
To: Jeff Janes <jeff.janes@gmail.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2012-05-30T18:23:49Z
Lists: pgsql-hackers
On Wed, May 30, 2012 at 11:06:45AM -0700, Jeff Janes wrote: > On Wed, May 30, 2012 at 10:57 AM, Bruce Momjian <bruce@momjian.us> wrote: > > On Wed, May 30, 2012 at 10:38:10AM -0700, Jeff Janes wrote: > >> On Wed, May 30, 2012 at 9:56 AM, Bruce Momjian <bruce@momjian.us> wrote: > >> > As part of a blog, I started looking at how a user could measure the > >> > pressure on shared buffers, e.g. how much are they being used, recycled, > >> > etc. > >> > > >> > They way you normally do it on older operating systems is to see how > >> > many buffers on the free list (about to be reused) are reclaimed as > >> > needed --- that usually indicates kernel cache pressure. Unfortunately, > >> > we don't have a freelist, except for initial assignment of shared > >> > buffers on startup. > >> > >> Isn't that what the buffers_alloc from pg_stat_bgwriter is ? > > > > The issue is that once a buffer is removed from the free list, it is > > never returned to the free list. > > A buffer doesn't need to be removed from the linked list in order for > buffers_alloc to get incremented. Seems buffers_alloc is the number of calls to StrategyGetBuffer(), which tells how many time we have requested a buffer. Not sure how that helps measure buffer pressure. > Conceptually, the freelist consists not only of the linked list, but > also of all unpinned buffers with a usagecount of zero. True. I guess my problem is can't find out how many of those zero-uage-count buffers are being reclaimed as needed. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + It's impossible for everything to be true. +