[ trimmed cc to just -devel list]

On Thu, Mar 17, 2005 at 08:49:38PM +0100, Blaisorblade wrote:
> Paul Warren said that there is a leak in 2.4 UML related to hostfs stuff.. 
> and 
> I already saw this message from some 2.4 recent UMLs. I hope Paul Warren can 
> explain what he saw and help us...
> 
> In case we have confirmation it's hostfs-related, we only need to go back to 
> the stable 2.4.24-1um hostfs code (i.e. pre-humfs), as I already do in the 
> 2.4-bs tree.

OK, our setup is that we have a load of distribution mirrors that are
NFS mounted onto the host server.  The guests then mount these using
hostfs.  We first noticed that a nightly updatedb was causing the amount
of memory that could be malloced to decrease.  We found that doing a
"find" across the entire hostfs mount also did the trick.

I've attached the script and program that we used to meause the maximum
amount of memory that can be malloced.  We then ran:

        while : ; do ./maxalloc ; updatedb ; done

... and watched the memory leak away.

Please let me know if you want some more info.

Paul
#!/bin/sh
hi=64
lo=1
while [ $[ $hi - $lo ] -gt 1 ] ; do
    mid=$[ ($hi + $lo) / 2 ]
    echo -n "trying $mid MB..."
    if /tmp/alloc $[ $mid * 1024 * 1024 ] ; then
        lo=$mid
        echo "OK"
    else
        hi=$mid
    fi
    echo "$lo $hi $[ $hi - $lo ]"
done
echo $hi MB
#include <sys/types.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
    size_t amt;
    char *a, *p;
    if (argv[1]) amt = (size_t)atoi(argv[1]);
    else amt = 1024 * 1024;
    if (!(a = malloc(amt))) {
        fprintf(stderr, "failed to malloc %u bytes\n", amt);
        return 1;
    }
    for (p = a; p < a + amt; ++p) *p = (char)p;
    return 0;
}

Reply via email to