Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Jul 2000 16:43:49 EDT
From:      "Greg Thompson" <johnnyteardrop@hotmail.com>
To:        freebsd-net@freebsd.org
Subject:   socket() and ENOBUFS
Message-ID:  <20000726204349.79438.qmail@hotmail.com>

next in thread | raw e-mail | index | archive | help
net hackers,

i have a multithreaded app in which each thread repeatedly opens a socket, 
sends some data, receives some data, then closes the socket.  as such, the 
total number of open sockets is bounded by the number of threads.  i'm 
finding that over time, i start getting ENOBUFS from my calls to socket().  
if, in response to this, i make the code pause for somewhere between 10 and 
60 seconds (i don't have an exact number), it can start opening sockets 
again.

my questions are:

what exactly is going on here?  systat -mbufs shows the free pool drop down 
to the ~200 range.  after killing the process, it seems to take some time 
for mbufs in use to be freed.

is there a resource limit than can be raised on my system to postpone the 
blockage?

i'm fairly new to freebsd.  i've tried grepping through /usr/src/sys a bit 
to find the code that gets hit when a socket is created, but i've had no 
luck.  i see the entry for the syscall in syscalls.master, but i don't see 
the code that gets hit when the syscall is invoked.  how do i visually 
follow a syscall?

thanks.
--
                 -greg
________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




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