Posted July 24, 2007 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
Posted July 25, 2007 - 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
Posted July 25, 2007 my solution is to disconnect manually the slow src, apex auto. connects to another :) Share this post Link to post Share on other sites
Posted July 25, 2007 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
Posted July 25, 2007 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
Posted July 25, 2007 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
Posted July 25, 2007 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
Posted July 26, 2007 my solution is to disconnect manually the slow src, apex auto. connects to another Looking for something more elegant, refined, automatic 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 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