From owner-freebsd-performance@FreeBSD.ORG Tue Dec 6 23:18:29 2005 Return-Path: X-Original-To: performance@freebsd.org Delivered-To: freebsd-performance@FreeBSD.ORG Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3132516A41F; Tue, 6 Dec 2005 23:18:29 +0000 (GMT) (envelope-from glewis@eyesbeyond.com) Received: from misty.eyesbeyond.com (glewis.dsl.xmission.com [166.70.56.15]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3C1AF43D4C; Tue, 6 Dec 2005 23:18:27 +0000 (GMT) (envelope-from glewis@eyesbeyond.com) Received: from misty.eyesbeyond.com (localhost.eyesbeyond.com [127.0.0.1]) by misty.eyesbeyond.com (8.13.3/8.13.3) with ESMTP id jB6NIQ9q045157; Tue, 6 Dec 2005 16:18:26 -0700 (MST) (envelope-from glewis@eyesbeyond.com) Received: (from glewis@localhost) by misty.eyesbeyond.com (8.13.3/8.13.3/Submit) id jB6NIPEq045156; Tue, 6 Dec 2005 16:18:25 -0700 (MST) (envelope-from glewis@eyesbeyond.com) X-Authentication-Warning: misty.eyesbeyond.com: glewis set sender to glewis@eyesbeyond.com using -f Date: Tue, 6 Dec 2005 16:18:25 -0700 From: Greg Lewis To: David Xu Message-ID: <20051206231825.GA44966@misty.eyesbeyond.com> References: <43956122.5020106@roq.com> <439568FB.1000804@freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <439568FB.1000804@freebsd.org> User-Agent: Mutt/1.4.2.1i X-Mailman-Approved-At: Wed, 07 Dec 2005 00:53:03 +0000 Cc: Michael Vince , freebsd-java@freebsd.org, performance@freebsd.org, freebsd-threads@freebsd.org Subject: Re: More threads X-BeenThere: freebsd-performance@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Performance/tuning List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Dec 2005 23:18:29 -0000 On Tue, Dec 06, 2005 at 06:33:31PM +0800, David Xu wrote: > Michael Vince wrote: [...] > >But I just can't seem to get past that mark, I have a lot of memory > >currently the Tomcat is allocated 2gigs of memory. [...] > Number of threads you can create if you use libthr is limited by > following factors: > 1) sysctl: > kern.threads.max_threads_per_proc > kern.threads.max_groups_per_proc > > 2) stack > per-thread userland stack, default number on 64 bits platform is 2M, > on 32 bits platform, it is 1M. I don't know whether java supports > adjusting default per-thread stack size. if can not, we may add > an environment variable to thread libraries, for example: > LIBPTHREAD_THREAD_STACKSIZE allows user to set default stack size. > > Thread also needs a kernel mode stack when it is in kernel, if > I am right, it is 16K bytes per-thread. if you create too many > threads, make sure both side won't exhaust address space, and > because kernel stack can not be swapped out when process is > running, you'd make sure physical memory can not be exhausted. > > 3) check memory limits > type limits command: > > Resource limits (current): > cputime infinity secs > filesize infinity kB > datasize 524288 kB > stacksize 65536 kB > coredumpsize infinity kB > memoryuse infinity kB > memorylocked infinity kB > maxprocesses 5547 > openfiles 11095 > sbsize infinity bytes > vmemoryuse infinity kB > > if address space is not large enough, you have to reconfigure kernel > to allow larger space. Fix me if I am wrong. I think that Michael's real problem is the amount of memory he has allocated. If he has 2GB allocated already then he is out of luck if he needs to allocate more (e.g. to create another thread). See mmap(2), particularly the BUGS section. -- Greg Lewis Email : glewis@eyesbeyond.com Eyes Beyond Web : http://www.eyesbeyond.com Information Technology FreeBSD : glewis@FreeBSD.org