gionnico wrote:
> If I download too many files (or better, I think sources), I get this 
> warning, the queue frozens and download stops: what are these "descriptors"?

Have you increased the limit for simultaneous downloads? The default is 100
which should be fine. I would not set it higher than maybe ~250 even on a very
fast connection because every connection adds overhead. You might have to
increase your file descriptor process limit, if you increase this setting too
much. A setting of 250 means, it will use up to 500 file descriptors (but only
251 if downloading a single file from 250 sources). If you have 300 leaves and
32 ultrapeers, that's already 832 but there might also be uploads and you need
around 10 for logging and save files. The default for banning file descriptors
seems to be 25% (which means 256 for a common limit of 1024 file descriptors
per process on Linux-based systems), so you might run out of file descriptors.

In your shell, run

        ulimit -n

to check your file descriptor limit per process. You could increase it to 2048
to be safe in the above mentioned case. Increasing this resource limit requires
root privileges usually.

Otherwise don't increase the limit for simultaenous downloads above 100 or
decrease the leave connection limit to 100-200 or even much less if you have
little upload bandwidth (less than 256 kbit/s). LimeWire has a limit of 32
leaves for example but the more the merrier and efficient, it just needs more
CPU and traffic.

If you download mostly small files (less than 10 MiB), you could also decrease
the limit for downloads per file because it's kind of nonsense to download a
4 MiB file from more than about a dozen sources. Thus you could decrease this
limit from 40 to 10-20 to safe descriptors. This also allows you to download
more files at a time, instead of one file with (too) many sources. It might
especially help if there are many sources that just don't work.

> How many are them, what does their number depend on and what is that 
> percentile (25% @default) for?

It's the number of file descriptors used for banning. Banning means the
connection will be hold (but ignored) until the remote side disconnects. This
is useful to avoid reconnect overhead caused by peers which went haywire or
hostile parties. It's not important though most of the time and you could
safely decrease it even to zero, same goes for the reserved number of file
descriptors. If you have a really low socket or file descriptor limit (less
than 512) and no way to increase it, I would certainly do this. The default
might be overkill anyway.
 
-- 
1000 octets   = 1 ko = 1 kilooctet; 1024 octets   = 1 Kio = 1 kibioctet
1000^2 octets = 1 Mo = 1 megaoctet; 1024^2 octets = 1 Mio = 1 mebioctet
1000^3 octets = 1 Go = 1 gigaoctet; 1024^3 octets = 1 Gio = 1 gibioctet

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
gtk-gnutella-devel mailing list
gtk-gnutella-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gtk-gnutella-devel

Reply via email to