penoff at cs.ubc.ca
Sat Feb 27 01:00:38 UTC 2010
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,
On Fri, Feb 26, 2010 at 8:12 AM, Brad Penoff <penoff at cs.ubc.ca> wrote:
> Thanks Anton for the advice about a low kern.maxdsiz . Does that work
> on your machine? I 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). I'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. I tried to modify but had much worse results...
> I set this:
> ... and NFS didn't load.
> I set this:
> ... and sshd didn't load!
> What combination should I try or what combination did you have in
> mind? Please excuse my ignorance.
> Also, I don't understand the link you sent... was it mistyped? It
> seems to go to some index and not any advice on this matter...
> 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. The
> thing is, I typically use FreeBSD for the best performance but I can't
> even get it to run there, at the moment.
> On Thu, Feb 25, 2010 at 10:49 PM, Brad Penoff <penoff at cs.ubc.ca> wrote:
>> I have a 32-bit machine with 2 GB running FreeBSD 8. I have a complex
>> application that starts getting ENOMEM once the resident memory is
>> about 200 MB. I 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. Including swap space, I should be able to handle 3
>> GB in an application. I 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 ). This
>> 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. I was hoping that some
>> kind and helpful person could take a look at it and help me out. It
>> 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). I 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). The goal is for "SIZE" to be 1.5 GB or higher; "RES" is up to
>> the OS. For example, on Linux, "SIZE" (called "VIRT") goes as high as
>> 2.8 GB before the system just becomes slow and unusable (never saw
>> ENOMEM). For FreeBSD, what can I change to increase the possible
>> "SIZE" before I see ENOMEM? I 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. Any ideas? Why
>> is it not going beyond 200 MB? Resident 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. I 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). Anxious to hear what
>> options exist.
>> Thanks again,
More information about the freebsd-questions