Date: Mon, 29 Jul 2002 11:39:56 -0700 (PDT) From: Matthew Dillon <dillon@apollo.backplane.com> To: Anders Nordby <anders@FreeBSD.ORG> Cc: Nuno Teixeira <nunotex@pt-quorum.com>, Jens Rehsack <rehsack@liwing.de>, freebsd-stable@FreeBSD.ORG, freebsd-hackers@FreeBSD.ORG Subject: Re: squid and datasize kernel problems (was: openoffice stack and datasize kernel problems) Message-ID: <200207291839.g6TIduVw055637@apollo.backplane.com> References: <20020608153940.GA13033@gw.tex.bogus> <3D022B97.3BB722F@liwing.de> <20020608161556.GC13033@gw.tex.bogus> <200206081740.g58HesRL081782@apollo.backplane.com> <20020729135107.GA82519@totem.fix.no>
next in thread | previous in thread | raw e-mail | index | archive | help
:... :> It should be noted that mmap() uses whatever VM space :> remains after MAXDSIZ and MAXSSIZ have been reserved, so :> increasing MAXDSIZ reduces the amount of VM available :> to mmap(). Still, a 1 GB MAXDSIZ should not result in :> system utilities / servers running out of mmap() space! :> Userland has 3G of VM space to play with. : :I'm running into some similar issues when trying to make Squid eat as :much as possible of the 4 GB memory I have installed in a Compaq :ProLiant DL 380 G2. At first, Squid seems to die and restart when trying :to allocate memory above 512 MB. By tuning MAXDSIZ, I have made it use :up to around 2 GB. If I set MAXDSIZ (I now do it in loader.conf with :kern.maxdsiz) above around 2950 MB, init starts failing upon boot: : :init in malloc(): error mmap(2) failed, check limits :init in malloc(): warning: recursive call : :Does anyone have any clues on how to overcome this? I'll be trying out :the the dlmalloc library that is distributed with Squid, but I suppose :I do need a 4 GB maximum data size to be able to make Squid actually use :4 GB. Is this possible, or am I being totally foolish? : :Any hint very appreciated. :-) : :Cheers, : :-- :Anders. 0xFFFFFFFF +-----------------------+----- | | | KERNEL | (1G) | | 0xC0000000 +-----------------------+----- | | | USER STACK | | | | | V | | | +-----------------------+ | | | | | AVAILABLE FOR MMAP | | | (stack, mmap, user data, program) = 3G MAXDSIZ +-----------------------+ | | | USER DATA (NON-MMAP)| | | +-----------------------+ | | | PROGRAM BINARY | | | 0x00000000 +-----------------------+----- Any C program which uses shared libraries uses mmap(). Many library functions and libraries also use mmap(), including portions of our malloc() implementation (though the main area used by mmap is the user data area). If you increase MAXDSIZ to the point where there is not enough VM for the mmap()'s programs make then you will run into the problems you are having. I'm not sure why you are trying to have squid use all 4G of the machine directly in its user data area. Squid caches a lot of things in memory, sure, but it also caches things in files and FreeBSD will use free physical memory to cache those files regardless of how you configure the machine. So you should be getting good utilization of your 4G of memory even if Squid cannot use all 4G in its user data area directly. Setting MAXDSIZ to 2.9GB out of the 3G of user VM available puts a huge squeeze on how much the program can mmap() before it runs out of VM. -Matt Matthew Dillon <dillon@backplane.com> To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-stable" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200207291839.g6TIduVw055637>