[PLUG] cleaning up RAM
Kenneth B. Hill
ken at scottshill.com
Fri Aug 3 04:33:41 UTC 2007
On Aug 1, 2007, at 8:04 AM, Keith Lofstrom wrote:
>
> I have a 1GB laptop. At night I run dirvish/rsync for backups, and
> rsync gobbles up all available memory. Afterwards, the process
> monitor in the gnome panel, and the command "free", shows most memory
> allocated to buffers and cache (which is no longer used). This may
> not be a lethal problem, but it doesn't look tidy, and I suspect it
> makes suspends take too long and perhaps even fail sometimes.
>
> So I wrote a cheezy little application, "bigalloc", that clears out
> memory of these unused buffers using lots of malloc() calls, below.
> "bigalloc" pushes all my running applications into swap, making them
> a little slow the first time I access them afterwards, but the all
> the stale old buffers/caches go away.
>
> I'm going to set this up to run after rsync at night, and see if the
> occasional suspend failures and gnome freezes are reduced.
>
> Keith
>
> ------------------------- bigalloc.c --------------------------------
> // bigalloc.c - use up memory
> // Keith Lofstrom 2007 Aug 1
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <errno.h>
>
> // these should be less than 2^31 for int32 counters
> // REALBIG is my machine size in KB
> #define REALBIG 1048576
> #define MAXSIZE 1024
>
> char * ptr[MAXSIZE] ;
> int cnt, size, clear ;
>
> int main() {
> for( size=0; size<MAXSIZE; size++ ) {
> ptr[size] = malloc( REALBIG );
> if( errno == ENOMEM ) break ;
>
> // memory is not actually taken until it is filled
> for( cnt=0 ; cnt< REALBIG ; cnt++ ) {
> ptr[size][cnt]= (char) 1;
> }
> #ifdef DEBUG
> printf( "%8ld\r", size );
> fflush(stdout);
> #endif
> }
> for( clear=0; clear<size; clear++ ) {
> free( ptr[clear] );
> }
> printf( "\n" );
> return( 0 );
> }
> ----------------------------------------------------------------------
>
> --
> Keith Lofstrom keithl at keithl.com Voice (503)-520-1993
> KLIC --- Keith Lofstrom Integrated Circuits --- "Your Ideas in
> Silicon"
> Design Contracting in Bipolar and CMOS - Analog, Digital, and Scan ICs
> _______________________________________________
> PLUG mailing list
> PLUG at lists.pdxlinux.org
> http://lists.pdxlinux.org/mailman/listinfo/plug
>
Keith,
Is this a Perl script? If so, then do you call it via a CRON job/
process?
More information about the PLUG
mailing list