Scott Marlowe wrote:
On Mon, 2006-03-20 at 08:45, Jim C. Nasby wrote:
On Fri, Mar 17, 2006 at 05:00:34PM -0600, Scott Marlowe wrote:
last pid: 5788; load averages: 0.32, 0.31, 0.28 up 127+15:16:08 13:59:24
169 processes: 1 running, 168 sleeping
CPU states: 5.4% user, 0.0% nice, 9.9% system, 0.0% interrupt, 84.7% idle
Mem: 181M Active, 2632M Inact, 329M Wired, 179M Cache, 199M Buf, 81M Free
Swap: 4096M Total, 216K Used, 4096M Free
PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU CPU COMMAND
14501 pgsql 2 0 254M 242M select 2 76:26 1.95% 1.95% postgre
5720 root 28 0 2164K 1360K CPU0 0 0:00 1.84% 0.88% top
5785 pgsql 2 0 255M 29296K sbwait 0 0:00 3.00% 0.15% postgre
5782 pgsql 2 0 255M 11900K sbwait 0 0:00 3.00% 0.15% postgre
5772 pgsql 2 0 255M 11708K sbwait 2 0:00 1.54% 0.15% postgre
That doesn't look good. Is this machine freshly rebooted, or has it
been running postgres for a while? 179M cache and 199M buffer with 2.6
gig inactive is horrible for a machine running a 10gig databases.
No, this is perfectly fine. Inactive memory in FreeBSD isn't the same as
Free. It's the same as 'active' memory except that it's pages that
haven't been accessed in X amount of time (between 100 and 200 ms, I
think). When free memory starts getting low, FBSD will start moving
pages from the inactive queue to the free queue (possibly resulting in
writes to disk along the way).
IIRC, Cache is the directory cache, and Buf is disk buffers, which is
somewhat akin to shared_buffers in PostgreSQL.
So, then, the inact is pretty much the same as kernel buffers in linux?
I think Freebsd 'Inactive' corresponds pretty closely to Linux's
'Inactive Dirty'|'Inactive Laundered'|'Inactive Free'.
From what I can see, 'Buf' is a bit misleading e.g. read a 1G file
randomly and you increase 'Inactive' by about 1G - 'Buf' might get to
200M. However read the file again and you'll see zero i/o in vmstat or
gstat. From reading the Freebsd architecture docs, I think 'Buf'
consists of those pages from 'Inactive' or 'Active' that were last kvm
mapped for read/write operations. However 'Buf' is restricted to a
fairly small size (various sysctls), so really only provides a lower
bound on the file buffer cache activity.
Sorry to not really answer your question Scott - how are Linux kernel
buffers actually defined?
Cheers
Mark