too many close calls for non-opened fds

Frank Cusack fcusack at fcusack.com
Wed Aug 23 04:46:40 EST 2006


On August 22, 2006 10:53:51 AM -0700 Rick Jones <rick.jones2 at hp.com> wrote:
> Chris Rapier wrote:
>>
>> Rick Jones wrote:
>>
>>>> Actually that was a mistake on my part. When -r option is used the close
>>>> call occurs only during startup and not for every connection. During startup
>>>> with -r option we get around 60K close calls.
>>>> We are about to do a fix for this issue on HP-UX (without -r option). The
>>>> approach is to find out the open fds and close the unwanted ones. Will this
>>>> be a valid approach.
>>>
>>> I would think that the overhead of determining if an FD is open wouldn't
>>> be that far off from closing it.
>>
>>
>> One question: I'm assuming its cheaper (or at least was at one time) to
>> just close a whole bunch of FDs rather than track what FDs are being
>> opened as they are being opened?
>
> most likely - at least when we are talking about crossing an exec boundary.

You can probably peek in /proc or /sys or otherwise get a list with one
syscall.  But you don't have to track anything.  You simply set FD_CLOEXEC.

Just to be clear (although I think everyone gets it) this problem isn't fd's
that sshd opens, it's fd's that might already be open when sshd is started.
At least that's my understanding.

Then again, if that's the case I don't understand the problem.  sshd should
close all fd's when it starts up and that's that.

I'll crawl back into my hole now.

-frank



More information about the openssh-unix-dev mailing list