Messages in this thread | | | Date | Tue, 18 Dec 2001 14:18:58 +0200 | From | Ville Herva <> | Subject | Re: 2.4.16: Out of memory - when still more than 100MB free |
| |
On Mon, Dec 17, 2001 at 07:10:54PM -0200, you [Marcelo Tosatti] claimed: > > > On 17 Dec 2001, Samuli Suonpaa wrote: > > > I've got VMWare killed a couple of times mysteriously. > > > > I've got 256MB memory and no swap on my laptop running 2.4.16 and for > > some reason VMWare has got killed with the following syslog > > information: > > > > Dec 17 23:33:23 puck kernel: Out of Memory: Killed process 28803 (vmware). > > Dec 17 23:33:35 puck kernel: Out of Memory: Killed process 28804 (vmware). > > Dec 17 23:33:37 puck kernel: /dev/vmmon: Vmx86_ReleaseVM: unlocked pages: 75286, unlocked dirty pages: 51084 > > Samuli, > > The problem is that buffer/cache/{i,d}cache pages are not getting freed > easily, and instead the kernel swapouts anonymous memory. > > Could you please try 2.4.17-rc1 and tell me if it makes a difference for > you ?
See my report on what happens on a 2GB box with .16 or .17rc1. Buffers are still not released as they should.
http://marc.theaimsgroup.com/?l=linux-kernel&m=100849985518543&w=2 http://marc.theaimsgroup.com/?l=linux-kernel&m=100857274818037&w=2
Perhaps someone could test on x86 with less memory (I can do that later, but right now I don't have any throw-away box with a recent kernel on it). On ia64 with 2GB+256MB swap this results in OOM when trying to allocate and use 1.7GB, albeit the real mem usage (-buffers) is less than 200MB.
Basically the test is
fill cache
find / -type f -exec cat {} \; > /dev/null updatedb
then run this with suitable argument:
#include <stdio.h> #include <stdlib.h>
#define BKSP "\010\010\010\010\010\010"
int main(int argc, char** argv) { unsigned long megs = 512; unsigned long size, i; unsigned char* buf; if (argc > 1) megs = atol(argv[1]); size = megs * 1024 * 1024; fprintf(stderr, "Allocating %lu megs...\n\n ", megs); buf = malloc(size); if (!buf) { fprintf(stderr, "malloc(%lu", size); perror(")"); exit(-1); } for (i = 0; i < size; i++) { buf[i] = 42; if ((i + 1) % (1024 * 1024) == 0) fprintf(stderr, BKSP "%4uMB", (i + 1) / 1024 / 1024); } fprintf(stderr, "\n Success.\n"); return 1; }
-- v --
v@iki.fi - 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/
| |