Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Feb 2010 17:00:26 -0800
From:      Brad Penoff <penoff@cs.ubc.ca>
To:        freebsd-questions@freebsd.org
Cc:        Humaira Kamal <humaira@cs.ubc.ca>, =?ISO-8859-1?Q?Irene_R=FCngeler?= <I.Ruengeler@fh-muenster.de>, Michael Tuexen <tuexen@fh-muenster.de>, Bill Moran <wmoran@potentialtech.com>, "Peter Lei \(peterlei\)" <peterlei@cisco.com>, Alan Wagner <wagner@cs.ubc.ca>, Anton Yuzhaninov <citrin@citrin.ru>
Subject:   Re: premature ENOMEM
Message-ID:  <b89c3c271002261700k16b14ddfsb99142a6ae4dcb9b@mail.gmail.com>
In-Reply-To: <b89c3c271002260812r56e4390ek8e2488f106482b6c@mail.gmail.com>
References:  <b89c3c271002252249s2ef1586ance42c6b85a01e5d7@mail.gmail.com> <b89c3c271002260812r56e4390ek8e2488f106482b6c@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Solved!!!

Peter Lei of Cisco noticed this application uses mmap rather than
malloc so I could get what I wanted (go beyond 200 MB without ENOMEM)
if I adjusted sysctl -w vm.max_proc_mmap to be a higher value.

Thanks so much for everyone's help,
brad

On Fri, Feb 26, 2010 at 8:12 AM, Brad Penoff <penoff@cs.ubc.ca> wrote:
> Thanks Anton for the advice about a low kern.maxdsiz . =A0Does that work
> on your machine? =A0I tried to give instructions in the original post so
> that anyone can tune their machine and try to see what I am seeing.
> Can others try to see on their own machines if the suggestions work?
> I'll do anything to help (even provide machines, if need be). =A0I'm
> surprised how difficult this is FreeBSD compared to Linux and Mac OS
> X, but I think FreeBSD will be the most performant if I can get over
> this hump.
>
> On my machine, I had kern.maxdsiz, kern.maxssiz, and kern.dfldsiz all
> set to 2147483648 to match the 2 GB on my machine; that wasn't working
> though. =A0I tried to modify but had much worse results...
>
> I set this:
> kern.maxdsiz=3D"1000000"
> kern.maxssiz=3D"2147483648"
> kern.dfldsiz=3D"2147483648"
> ... and NFS didn't load.
>
> I set this:
> kern.maxdsiz=3D"0"
> kern.maxssiz=3D"2147483648"
> kern.dfldsiz=3D"2147483648"
> ... and sshd didn't load!
>
> What combination should I try or what combination did you have in
> mind? =A0Please excuse my ignorance.
>
> Also, I don't understand the link you sent... was it mistyped? =A0It
> seems to go to some index and not any advice on this matter...
> http://docs.freebsd.org/cgi/mid.cgi?200207291839.g6TIduVw055637
>
> Thanks again for your help and ahead of time to anyone else's... I'm
> getting a bit desperate and I'm surprised how difficult this is to get
> working in FreeBSD when it was so simple in Linux and Mac OS X. =A0The
> thing is, I typically use FreeBSD for the best performance but I can't
> even get it to run there, at the moment.
>
> Thanks,
> brad
>
>
> On Thu, Feb 25, 2010 at 10:49 PM, Brad Penoff <penoff@cs.ubc.ca> wrote:
>> Greetings,
>>
>> I have a 32-bit machine with 2 GB running FreeBSD 8. =A0I have a complex
>> application that starts getting ENOMEM once the resident memory is
>> about 200 MB. =A0I adjusted the appropriate /boot/loader.conf and
>> /etc/login.conf settings resulting in an increase in the "limit"
>> values to around 2 GB, but still the complex application gives me
>> ENOMEM at 200 MB. =A0Including swap space, I should be able to handle 3
>> GB in an application. =A0I need help understanding how I can enable this
>> or why I cannot.
>>
>> I had this same problem on FreeBSD 6.3 about a year and a half ago,
>> but I found an application-level work-around particular for FreeBSD
>> (the full thread is here http://markmail.org/message/5nsld7pb25m5bfja
>> ; but we found no general solution unfortunately ). =A0This
>> application-level work-around is no longer sufficient so I wanted to
>> revisit the root of this problem I was seeing and hopefully ask this
>> community of smart hackers to give me a hand here...
>>
>> I have created a simplified application that demonstrates this exact
>> same problem and made it easy to reproduce. =A0I was hoping that some
>> kind and helpful person could take a look at it and help me out. =A0It
>> doesn't require any editing of code or anything... In the end, I just
>> need to know how to configure my FreeBSD box with 2 GB of RAM to not
>> give me ENOMEM for this application when it is using only 200 MB,
>> something that never happened in the previous unresolved thread
>> reverenced above.
>>
>> This simplified application has a deliberate memory leak but the goal
>> is for it to not give ENOMEM at 200 MB (I want to be able to use about
>> 1.5 GB). =A0I have created a tarball... I think it may only work on a
>> 32-bit machine.
>>
>> download/wget http://cs.ubc.ca/~penoff/reslim.tgz
>> tar zxf reslim.tgz
>> cd reslim
>> gmake (or make on Linux)
>> sh ./myumem.sh
>>
>> On my system, when this prints our an error message, in "top", I only
>> see about 200 MB of both "SIZE" and "RES" (they are a few numbers
>> off). =A0The goal is for "SIZE" to be 1.5 GB or higher; "RES" is up to
>> the OS. =A0For example, on Linux, "SIZE" (called "VIRT") goes as high as
>> 2.8 GB before the system just becomes slow and unusable (never saw
>> ENOMEM). =A0For FreeBSD, what can I change to increase the possible
>> "SIZE" before I see ENOMEM? =A0I have tried increasing
>> /boot/loader.conf values to match my 2 GB RAM (kern.maxdsiz,
>> kern.maxssiz, kern.dfldsiz), as well as unlimited values in
>> /etc/login.conf, but still 200 MB seems a hard limit. =A0Any ideas? =A0W=
hy
>> is it not going beyond 200 MB? =A0Resident memory is equal to memory
>> size used by the app so why is it never going to disk to swap before
>> ENOMEM comes up?
>>
>> Thanks a million for any help or advice you could lend. =A0I would be
>> more than willing to help in any way, even providing a machine to try
>> this on (I could sponsor an emulab.net account). =A0Anxious to hear what
>> options exist.
>>
>> Thanks again,
>> brad
>>
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?b89c3c271002261700k16b14ddfsb99142a6ae4dcb9b>