All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oskar Pearson <oskar@linux.org.za>
To: linux-mm@kvack.org
Subject: Re: Opening 5000 file descriptors in linux??
Date: Tue, 6 Apr 1999 21:35:30 +0200	[thread overview]
Message-ID: <19990406213530.A1581@linux.org.za> (raw)
In-Reply-To: <14082.48568.621877.339352@dukat.scot.redhat.com>; from Stephen C. Tweedie on Thu, Apr 01, 1999 at 01:28:40AM +0100

Hi

Stephen Tweedie wrote:

> Two things: first of all, the default rlimit for open files is still
> 1024, so you need to raise that to use more in one process.  From bash,
> that's 
> 
> 	ulimit -Hn 100000; ulimit -n 100000

Done.

> or use the setrlimit() kernel call.
> 
> Secondly, the default FD_SET type only has space for 1024 fds in the
> bitmap, so either make sure you are using poll, or define your own,
> sufficiently large, FD_SET if you need to use select.
> 
> Other than that, all should work.

Interesting thing. Someone sent me a simple piece of code that they
were having problems with. Instead of opening /dev/null 5 million
times, they actually opened a network socket. Here is the code:

--------
#include <stdio.h>
#include <sys/socket.h>
main()
{
        int s;
        for(s = 0;; s++)
                if(socket(AF_INET,SOCK_STREAM,0) < 0)
                        break;
        printf("%d\n", s);
}
--------

This breaks much sooner than the ulimit value:

vi:~ # ./test 
508
vi:~ # ./test 
519
vi:~ # ./test 
519
<fiddle around with random things so that the system swaps>
vi:~ # ./test 
552

strace output:
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 552
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 553
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 554
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = -1 ENOBUFS (No buffer space
available)

no dmesg errors.

vi:~ # uname -a
Linux vi.qualica.com 2.2.5-ac1 #2 Sun Apr 4 14:26:31 SAST 1999 i586
unknown

If I add a second delay every 10 seconds, the system seems to free up
enough memory to get to around about 1000 filedescriptors. This points
to a resource management problem, IMHO.

I am not sure if the later ac-? patches do the same thing. I was out
of the country this last weekend.

Oskar
--
To unsubscribe, send a message with 'unsubscribe linux-mm my@address'
in the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://humbolt.geo.uu.nl/Linux-MM/

           reply	other threads:[~1999-04-06 20:46 UTC|newest]

Thread overview: expand[flat|nested]  mbox.gz  Atom feed
 [parent not found: <14082.48568.621877.339352@dukat.scot.redhat.com>]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=19990406213530.A1581@linux.org.za \
    --to=oskar@linux.org.za \
    --cc=linux-mm@kvack.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.