Return to BSD News archive
Newsgroups: comp.os.386bsd.questions
Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!elroy.jpl.nasa.gov!usc!hela.iti.org!widener!dsinc!jabber!candle!root
From: root@candle.uucp (Bruce Momjian)
Subject: Re: Swap staying full?
References: <2b9g97$93g@terminator.rs.itd.umich.edu> <CFz4Cr.2xw@candle.uucp>
Organization: a consultant's basement
Date: Fri, 5 Nov 1993 03:21:30 GMT
X-Newsreader: TIN [version 1.2 PL2]
Message-ID: <CG01Bu.65E@candle.uucp>
Lines: 55
Bruce Momjian (root@candle.uucp) wrote:
: I have the same problem under BSD/386. Karels is working on it. As
: soon as I hear something, I will try to get permission to distribute it
: to the 386bsd groups. I am also running in 5MB ram.
I am following up to myself. Let me give the details. Symtoms:
After a fresh reboot, system stays up for several days
Free swap space slowly decreases
As swap remaining hits zero, machine locks up, no message given
I have found that:
Unrecovered swap space is allocated in 32 block (16k) pieces.
The pagedaemon is the current process when the swap is allocated.
Here is a program that causes it to happen. I have 5MB of RAM,
so it malloc's 10MB in 1MB chunks, accesses every 1k block,
then exists. Each time it is run, I loose usually some multiple
of 32 blocks from my swap, (4*32, 10*32, etc.). I just run it over
and over, and watch the swap disappear. It happens even in single
user mode. With 20MB of swap, it takes about 2-3 hours to crash.
#include <stdio.h>
int k = 1024;
main()
{
int i,j;
char *x;
for (i=0; i < 10; i++)
{
if ( (x=malloc(k*k)) == NULL)
exit(1);
for (j=0; j < k*k; j+=k)
{
*x = 'x';
x += k;
}
}
puts("malloc'ed");
sleep(1);
}
--
Bruce Momjian | 830 Blythe Avenue
root%candle.uucp@bts.com | Drexel Hill, Pennsylvania 19026
+ If your life is a hard drive, | (215) 353-9879(w)
+ Christ can be your backup. | (215) 853-3000(h)