Re: ~500 megs cached yet 2.6.5 goes into swap hell

Brett E.
2004-04-29T00:04:21Z

Brett E. wrote:

> Same thing happens on 2.4.18.
>
> I attached sar, slabinfo and /proc/meminfo data on the 2.6.5 machine. I
> reproduce this behavior by simply untarring a 260meg file on a
> production server, the machine becomes sluggish as it swaps to disk. Is
> there a way to limit the cache so this machine, which has 1 gigabyte of
> memory, doesn't dip into swap?
>
> Thanks,
>
> Brett
>

I created a hack which allocates memory causing cache to go down, then
exits, freeing up the malloc'ed memory. This brings free memory up by
400 megs and brings the cache down to close to 0, of course the cache
grows right afterwards. It would be nice to cap the cache datastructures
in the kernel but I've been posting about this since September to no
avail so my expectations are pretty low.

Here's the code:

#define ALLOC_SIZE 1024*1024
#define NUM_ALLOC 400

int main() {
char* ptr;
int i,j;

for(i=0;i<NUM_ALLOC;i++) {
ptr = (void*)malloc(ALLOC_SIZE);
for(j=0;j<ALLOC_SIZE;j+=512) {
ptr[j]=0;
}
}

return 0;
}

...
Maybe I can make it a hack of all hacks and have it parse out "Cached"
from /proc/meminfo and allocate that many bytes.