Re: [core-dev] Downloading in 100k chunks

"Zlatin Balevsky" <[email protected]> Wed, 30 Jun 2004 11:20:01 -0400
Newsgroups gmane.network.gnutella.limewire.core.devel
Message-ID <[email protected]>
If we decide to change that, can we make it a power of 2? It feels much better that way ;-)

---------- Original Message ----------------------------------
From: Gregorio Roper <[email protected]>
Reply-To: [email protected]
Date: Wed, 30 Jun 2004 17:17:19 +0200

>You are right. There has to be a lower limit for the chunk size which could be the 100k 
>LimeWire is using at the moment.
>You could also use 100k or 1% of the amount that has yet to be downloaded, which would 
>probably help circumventing the problem of very low parellelism when a download is near 
>complete.
>It would be interesting to know what implications a larger chunk size would have on the 
>download mesh.
>
>mfg
>gregorio
>
>Sumeet Thadani wrote:
>
>> It's time to revisit this stuff. Currently about 100% of our downloads 
>> HTTP1.1, since we used having a hash as the heuristic for distinguishing 
>> HTTP1.1 uploaders from HTTP 1.0 uploaders.
>> 
>> Given that MIN_SPLIT_SIZE ==  CHUNK_SIZE we are seeing no stealing 
>> happening at all. For the stealing to occur, MIN_SPLIT_SIZE needs to be 
>> less than CHUNK_SIZE. Note that this is not a bad thing -- read on to 
>> see why.
>> 
>> Increasing the chunk size has the advantage that on 
>> high-latency/low-bandwidth connections we would speed up the download by 
>> sending less headers (note that this was much worse with HTTP 1.0 
>> downloads -- since if the chunk size was too small we would have to 
>> re-establish the TCP connection for each chunk).
>> Having a very large chunk is also not the best idea -- stealing from a 
>> HTTP 1.1 uploader is tricky, because there is no way to tell the server 
>> to stop the uploading (meaning change your mind about the range you 
>> want) after you have made the request. Once the request is made, you 
>> have to download the range requested before you make the next request or 
>> close the connection if another worker steals a part of that chunk from 
>> you. So you have to predeterine what ranges you want before you make the 
>> request, and if the range is too big, and one downloader is going slow 
>> you can steal from it but at the expense of having the close that 
>> connection, So It's a delicate balance.
>> 
>> Using a heuristic like 1% may not be optimal --  for a small file, 1% 
>> can be much smaller than the current chunk size, and may cause far more 
>> http headers to be exchanged than necessary.
>> 
>> Comments?
>> 
>> Thanks,
>> 
>> Sumeet
>> 
>> Gregorio Roper wrote:
>> 
>>> Is it still necessary to download all files in 100k chunks? It seems a 
>>> little inefficient sending all these HTTP-requests/responses back and 
>>> forth and it definitely slows the download down if you are working 
>>> with a high latency connection.
>>> Maybe using a dynamic chunk size of 1% of the file size would be a 
>>> good idea.
>>>
>>> mfg
>>> gregorio
>>> _______________________________________________
>>> core-dev mailing list
>>> [email protected]
>>> http://www.limewire.org/mailman/listinfo/core-dev
>>>
>>> .
>>>
>> 
>> 
>> _______________________________________________
>> core-dev mailing list
>> [email protected]
>> http://www.limewire.org/mailman/listinfo/core-dev
>> 
>> 
>_______________________________________________
>core-dev mailing list
>[email protected]
>http://www.limewire.org/mailman/listinfo/core-dev
>
_______________________________________________
core-dev mailing list
[email protected]
http://www.limewire.org/mailman/listinfo/core-dev