Messages in this thread | | | Date | Wed, 18 Apr 2001 15:52:58 -0300 (BRST) | From | Rik van Riel <> | Subject | Re: Very bad behavior of kswapd |
| |
On Wed, 18 Apr 2001, Laurent Chavet wrote:
> Try this (my example I've 2GB of ram) > > turn all your swap off > > dd about 15% of the size of your RAM: > dd if=/dev/zero of=/local/test count=300 bs=1000000 > > Run this program with SIZE about 95% of your RAM: > > #include <stdlib.h> > #include <unistd.h> > #include <assert.h> > > #define SIZE (1900 * 1024 * 1024) > int main() > { > int i; > char *p = malloc(SIZE); > assert (p != NULL); > for (i = 0; i < SIZE; i++) > p[i] = 1; > printf ("done %p\n", p); > > while (1) > { > sleep (60); > } > return 0; > } > > > Watch top: when this program needs the memory that kswapd keep > in cache they go both at 100% cpu (on SMP) but still the size of > the program only grows at about 100KB/s, why is kswapd releasing > it so slowly and taking so much CPU ?
Because kswapd still has to scan all the (unfreeable) memory of the big process to determine it isn't freeable.
At the moment kswapd is really stupid about these corner-case situations, please bear with us while we fix it ...
... and don't forget to fill in a bugzilla item on the Linux-MM bugzilla ;)
regards,
Rik -- Linux MM bugzilla: http://linux-mm.org/bugzilla.shtml
Virtual memory is like a game you can't win; However, without VM there's truly nothing to lose...
http://www.surriel.com/ http://www.conectiva.com/ http://distro.conectiva.com/
- 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/
| |