Jump to content

New Queueing System


Recommended Posts

This is a slightly long post - if you can't be bothered to read it all, skip to the section after the ****************.

I've noticed that, roughly speaking, my torrents fall in to one of two categories, Fast and Slow (to be specific, about 20-40Kb/S and about 0-5Kb/S). To get optimum downloading both in terms of speed and completing queued torrents, it's best to mix some fast and some slow downloads.

For example, if you have slow torrents (S1, S2, S3, S4, S5, ...) and fast torrents (F1, F2, F3, F4, F5, ...) then you might start off with downloading [s1, F1, F2] (assuming 3 concurrent downloads) or [s1, F1, S2] depending on the relative speeds and so on, so as to download to your maximum speed. Then when a fast download finished you'd want another fast file to keep the speed up. Then if the slow file finished you'd want another slow file, and so on. To put it another way:

[s1, F1, F2] - [s1, F2, F3] - [s1, F3, F4] - [s2, F3, F4] - [s2, F4, F5] - [s2, F5, F6] - [s3, F5, F6] - [s3, F6, F7] - [s3, F7, F8] - [s4, F7, F8] ....


[s1, S2, F1] - [s1, S2, F2] - [s1, S2, F3] - [s1, S2, F4] - [s2, S3, F4] - [s2, S3, F5] - [s2, S3, F6] - [s2, S3, F7] - [s3, S4, F7] - [s3, S4, F8] ....

Of course there are many ways this could work depending on optimum overall download speed, speed and size of each download, and the number of concurrent downloads, and so on, and those variables can all change at different and unpredictable times.

A bad scheme would be [F1, F2, F3] - [F2, F3, F4] - [F3, F4, F5] - [F4, F5, F6] - [F5, F6, F7] - [F6, F7, S1] - [F7, S1, S2] - [s1, S2, S3] - [s2, S3, S4] - [s3, S4, S5] - [s4, S5, S6] etc. The first stage would be very fast but the end stage would be slow, in which time your download speeds would be far less than the maximum possible.

If you watch your torrents on a regular basis then you can order them to achieve the best results, and with a little practice (and some of your life) you can achieve a constant download speed and get everything downloaded.

However if you are leaving uTorrent unmonitored (I've been away from home for a week at a time recently) then you need to know beforehand what speeds you will get on what torrent, and then you need to work out how long each will take, and order your torrents accordingly. Based on the first example above that would be S1, F1, F2, F3, F4, S2, F5, F6, S3, F7, F8, S4, etc. However even a small mistake, or one of the torrents downloading faster or slower than planned, will leave times when the overall download speed is too low - and then you have to wait for the slow torrents to finish before the speed picks up again.

What is the solution?

It would be possible to increase the concurrent downloads so that even if several slots were filled with slow files there would still be slots for fast files to keep the speed up. However this is (as far as I can see) not recommended by uTorrent experts for a number of reasons, and it could still hit problems if the download speed of individual torrents is not as planned, and you could end up with a lot of slow torrents all downloading at the same time, still not meeting the maximum download speed. In addition if you have limited upload capacity then this could be a big problem.

Another easy fix would be to have an option for starting more torrents if the average total download speed is less than a certain speed - I thought uTorrent had this but I guess I was thinking of another client. However this has the same problems as the suggestion above.

On the high end, a system that monitored the download speeds of both current and queued torrents and juggled the positions accordingly would be very cool, though perhaps confusing for the average user and hard to control for the expert (since the order of the items would keep switching). You would also lose some bandwidth since uTorrent would have to keep connecting to the trackers, connecting to the available peers, and checking the potential speed.


However a simple system would be to have a category system where you could mark individual files as slow or fast, and each category would have its own torrent list and list order. Then you could have a setting for the number of the download slots that are earmarked for slow or fast torrents (eg out of 3 download slots you could have 2 fast and 1 slow, or whatever). These slots would then be filled from the appropriate category list (or 'bucket' if you like) so that the best balance of fast and slow would be maintained and the downloads would be done at the optimum speed in the order defined by the user without the fast or slow torrents being overly prioritized. If either of the buckets was emptied then the slots would be filled purely from the other.

It might well be worth having a third category which can be loaded into either fast or slow slots - a 'mixed' or 'medium' speed, for those torrents which have quite variable speeds or are a priority (ie you want to make sure they get the next available slot no matter what it is).

You could provide some fine tuning, for example automatically changing the number of fast and slow slots based on the average overall download speed for the last 10 minutes, or based on the number of torrents in each bucket still to be downloaded, or the overall size of the remaining files, or similar; or a system that double checks the category of a file when it's being downloaded and recategorizes it as necessary, possibly at the head of the other bucket's list or something. The latter would be particularly useful for those torrents where the download speed is heavily dependent on which seeds you connect to (ie some torrents seem to vary from 5Kb/S to 30Kb/S), especially if you had the third category of 'medium'.

Please note that the system I propose is purely to control the order in which torrents are downloaded - it would not limit or control the actual speed in any way. In other words, if you have a file marked as 'slow' that actually comes in fast then that's fine, there would be no interference in that speed by uTorrent.

This should add some significant speed and functionality improvements without too much of a change to the UI or too much extra coding. I hope it gets in to uTorrent because I could really use it sometimes. :)

Link to comment
Share on other sites


This topic is now archived and is closed to further replies.

  • Create New...