Sign in to follow this  
Followers 0
Excelsium

Completing downloads quickly

8 posts in this topic

Hi..

Problem:

- File 99% downloaded.

- Downloads last chunk(s) from slow source(s).

- Last 1% takes longer than first 99% (exaggeration).

-- Sometimes there is no 'fast' source available.

Solution?:

- Track speed of sources.

- One of the fastest sources grants extra temporary slot to user who needs the last 1%/chunk(s)

of his download.

- Maybe bandwidth prioritization for that slot.

Is this practical?

Maybe this is already implemented somewhere?

E

Share this post


Link to post
Share on other sites

- Last 1% takes longer than first 99% (exaggeration).

No it's not. :)

It's really a known problem in SDC++. It's quite often when 10kB/s source "overlap" (lan) 1MB/s+ one.

Share this post


Link to post
Share on other sites

my solution is to disconnect manually the slow src, apex auto. connects to another :)

Share this post


Link to post
Share on other sites

StrongDC++/ApexDC++ already contains feature which saves last user's download speed and when this user connects and there's no free block and user's speed is at least 5x bigger than the speed of some running chunk, it tries to replace this slow chunk(user) with the faster one.

But:

a ) user's last download speed must be known

b ) it still doesn't work correctly because there's condition to avoid crash and this condition also sometimes avoid replacing slow user with faster one :)

point A can't be fixed, but there must be something done with B but I don't know what :)

Share this post


Link to post
Share on other sites

I remember last situation not long ago. I was downloading from 3 fast users (500kB/s+) and 5 slower (let's say <50kB/s) from the very beginning so I guess the speed was (should have been) known for each of them. And it was some 5kB/s guy who got the last piece. I have a feeling that often it's the slowest guy who get's the last piece.

I guess it's should be just :) then.

Manual control here works best.

As a note for "Disconnecting slow downloads" - I don't use it because it ... disconnects. And really should check if there are some other downloads from this user before giving up the slot.

Share this post


Link to post
Share on other sites

I have a feeling that often it's the slowest guy who get's the last piece.

It's always. Just imagine similar situation:

you have a road and there are 5 cars on this road. One is slow, one is fast and one is faster. They starts at the same time. Now tell me which cars will be the first in the finish and which one will leave on the road as the last one ;-)

Share this post


Link to post
Share on other sites

It's always. Just imagine similar situation:

you have a road and there are 5 cars on this road. One is slow, one is fast and one is faster. They starts at the same time. Now tell me which cars will be the first in the finish and which one will leave on the road as the last one ;-)

But in our case, aren't we in the position to ask for the fastest car again after it has passed a given distance/crossed the finish?

Share this post


Link to post
Share on other sites

my solution is to disconnect manually the slow src, apex auto. connects to another :)

Looking for something more elegant, refined, automatic :P Lol

Not sure if my full point came across.. I see some riddles about cars..:

If the known fastest sources slots are taken then in the special case the user needs the last chunk of a download then grant the user an extra slot

- if there is a fast source and the fast source has that chunk... of course.

StrongDC++/ApexDC++ already contains feature which saves last user's download speed and when this user connects and there's no free block and user's speed is at least 5x bigger than the speed of some running chunk, it tries to replace this slow chunk(user) with the faster one.

I see... but perhaps when 'it tries to replace this slow chunk(user) with the faster one' it could ask for permission to use the 'reserved for sending last chunk slot'... only in that circumstance of course and of course if the fast source has the required chunk, there is a known fast source etc. :)

But

a ) user's last download speed must be known

b ) it still doesn't work correctly because there's condition to avoid crash and this condition also sometimes avoid replacing slow user with faster one :P

point A can't be fixed, but there must be something done with B but I don't know what ;)

So its difficult to build a fully functioning speed tracking feature.. I see.

E

Share this post


Link to post
Share on other sites
Sign in to follow this  
Followers 0