[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: update re: fork() failures in 2.1.101



Hi,

On Fri, 12 Jun 1998 06:36:53 +0200 (MET DST), Rik van Riel
<H.H.vanRiel@phys.uu.nl> said:

> [Paul get's "cannot fork" errors after 60 or more hours of
>  uptime. This suggests fragmentation problems.]

Kernel version?

> Ahh, I think I see it now. The fragmentation on your system persists
> because of the swap cache. The swap cache 'caches' swap pages and
> kinda makes sure they are reloaded to the same physical address.

No.  As it stands right now, the "caching" component of the swap cache
is an *on disk* cache of resident pages.  Once the pages are swapped
out they are paged back in anywhere appropriate.  That part of the
fragmentation does not persist.

The real problem is not swapper, I suspect, but the various consumers of
slab cache (especially dcache).  The slab allocator has some really
nasty properties; just one single in-use object will pin an entire slab
(up to 32k) into memory.  If the slabs become small, then it will be 4k
pages which get so pinned, and at that point we cannot allocate any
stack pages.  There are a number of ways we may tackle this in 2.1, but
disabling the swap cache won't help at all.

--Stephen