lkml.org 
[lkml]   [2003]   [Nov]   [24]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
    /
    DateMon, 24 Nov 2003 08:37:29 +0100
    From"Ihar 'Philips' Filipau" <>
    SubjectRe: Do I need kswapd if I don't have swap?
       Can you try 2.6?
    
       AFAIK 2.4 has no callpath to return ENOMEM to user space. (probably 
    in couple of months I will reach this issue on my systems and test it 
    completely).
    
       kswapd is universal process to write-out information to disk - and in 
    Linux pages has no any difference as kswapd concerned. It just dumbly 
    write them out. If you will disable kswapd - files modified by mean of 
    mmap() most likely will never be written back to disk. (Here I am (most 
    likely) wrong - probably some of the vm gurus can correct me). That's 
    actually why Linux has problems with disk cache and disk cache can 
    easily swap the task doing i/o.
    
       If you want to work-around this situation - enable OOM. it will just 
    kill your process instead.
    
    
    David Wuertele wrote:
    > Using 2.4.18 on my 32MB RAM embedded MIPS system, malloc() goes
    > bye-bye:
    > 
    >   /* Malloc as much as possible, then return */
    >   #include <stdio.h>
    >   #define UNIT 1024		/* one kilobyte */
    >   int main ()
    >   {
    >     unsigned int j, totalmalloc=0, totalwrote=0, totalread=0;
    >     while (1) {
    >       unsigned char *buf = (unsigned char *) malloc (UNIT);
    >       if (!buf) return 0;
    >       totalmalloc += UNIT; fprintf (stderr, "%u ", totalmalloc);
    >       for (j=0; j<UNIT; j++) buf[j] = j % 256;
    >       totalwrote += UNIT; fprintf (stderr, "%u ", totalwrote);
    >       for (j=0; j<UNIT; j++) if (buf[j] != (j % 256)) return -1;
    >       totalread += UNIT; fprintf (stderr, "%u\n", totalread);
    >     }
    >   }
    > 
    > I expected this program to malloc most of my embedded MIPS's 32MB of
    > system RAM, then eventually return with a -1 or a -2.  Unfortunately,
    > it hangs having finally printed:
    > 
    >   M26916864
    >   W26916864
    >   R26916864
    > 
    > The malloc call isn't even returning.  What could explain that?
    > 
    > I don't have swap space configured, and I notice several kernel
    > threads that I figure might be assuming I have swap.  For example:
    > 
    >       3 root     S    [ksoftirqd_CPU0]
    >       4 root     S    [kswapd]
    >       5 root     S    [bdflush]
    >       6 root     S    [kupdated]
    >       7 root     S    [mtdblockd]
    > 
    > Do I need any of these if I don't have swap?  Are there any special
    > kernel configs I should be doing if I don't have swap?
    > 
    
    
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at  http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at  http://www.tux.org/lkml/
    
    
    \
     
     \ /
      Last update: 2005-03-22 13:58    [from the cache]
    ©2003-2008