Date: Mon, 05 May 2003 20:10:46 -0700 From: Terry Lambert <tlambert2@mindspring.com> To: sjlai@synatech.com.au Cc: freebsd-hackers@freebsd.org Subject: Re: 180,000 kevents - out of memory errors Message-ID: <3EB727B6.FFC89521@mindspring.com> References: <20030505232029.A46013@pobox.com.>
next in thread | previous in thread | raw e-mail | index | archive | help
Simon Lai wrote: > I want to watch approx 200,000 sockets > using kevent, but I get an ENOMEM error > when adding kevent structures to the kqueue. > The machine in question has 1.5GB RAM > and can happily accept 270,000 TCP connections, > but I need kevent to manage that many sockets, > select() being a little too slow. > > I want to add one kevent struct to the queue > for each connection. > > Currently I can only queue around 80,000 - 90,000 > kevents, with this config - > > maxfiles=250000 > nmbclusters=35000 > nmbufs=210000 > > with this config I can make 180,000 connections and > queue 180,000 kevents - > > maxfiles=200000 > nmbclusters=40000 > nmbufs=240000 > > what should I do to improve the number of kevents > I can queue? 1) Add 2.5G more RAM. 2) Reconfigure the KVA space to use 1G for UVA and 3G for KVA, instead of 2G/2G, which is the default, so you won't run out of page mappings. 3) Disable IPSEC. 4) Separate the allocation of tcpcb's and udpcb's; there is no reason to support 200,000 for both, when you can support 200,000 for one, and 1,000 or less for the other, and save all that memory. -- Terry
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3EB727B6.FFC89521>