On Thu, Aug 04, 2005 at 10:53:38AM +0200, Brice GIBOUDEAU wrote:
> Hi,
>
> I give more details.
Ta. Looks like lowmem exhaustion:
> /proc/meminfo :
> ---------------
>
> Tue Aug 2 02:04:01 CEST 2005
> total: used: free: shared: buffers: cached:
> Mem: 16966471680 15623704576 1342767104 0 180224 14847438848
> Swap: 32737632256 0 32737632256
> MemTotal: 16568820 kB
> MemFree: 1311296 kB
> MemShared: 0 kB
> Buffers: 176 kB
> Cached: 14499452 kB
Large page cache...
> SwapCached: 0 kB
> Active: 1932 kB
> Inactive: 14497760 kB
Mostly inactive...
> HighTotal: 15858532 kB
> HighFree: 1305552 kB
> LowTotal: 710288 kB
> LowFree: 5744 kB
And very little low memory free.
> LowTotal: 710288 kB
> LowFree: 4788 kB
Yup, not much there at all.
> /proc/slabinfo :
> ----------------
>
> Tue Aug 2 02:04:02 CEST 2005
> slabinfo - version: 1.1 (SMP)
> xfs_inode 208657 208719 408 23191 23191 1 : 124 62
> linvfs_icache 208700 208700 384 20870 20870 1 : 124 62
> buffer_head 3624879 3751050 128 125034 125035 1 : 252 126
So we have 80MiB in xfs inodes, another 80MiB in linvfs_icache, and
460MiB in buffer heads. So that's a total of 620MiB of your 700MiB
of low memory right there, and probably the source of the memory
exhaustion.
The buffer heads are the real problem - and that's related to the
size of the page cache. IIRC we have at least one buffer head per
page. With 14499452k of page cache, that's at least 3,624,863 buffer
heads needed at one per page. Looks pretty close, to me.
This does look like a highmem/lowmem reclaim issue to me - the
pagecache in the highmem area needs to be reclaimed to free
up buffer heads in the lowmem region. because there is lots
of free memory in the highmem region, I doubt the reclaim
code is freeing it up sufficiently.
One quick thing to try is limit the machine to, say, 12GiB of RAM
(mem=xxx boot option) and that will limit buffer head usage to less
that 400MiB of low memory. That should prevent you from exhausting
lowmem by bounding the maximum size of the kernel pagecache at
a point below where lowmem exhaustion occurs.
Another option is to go to a 2.6 kernel as, IIRC, XFS no longer
has the buffer-head-per-cached-page behaviour in 2.6. Hence you
won't consume anywhere near as much lowmem on a 2.6 kernel when
the kernel lets the page cache grow so large....
Yet another option is to move to a 64bit platform that doesn't have
this lowmem/highmem memory architecture...
HTH.
Cheers,
Dave.
--
Dave Chinner
R&D Software Enginner
SGI Australian Software Group
|