Opened 7 years ago

Closed 7 years ago

#5665 closed Enhancement (wontfix)

In-Order Downloading

Reported by: Renara Owned by:
Priority: Normal Milestone: None Set
Component: Transmission Version: 2.82
Severity: Normal Keywords:
Cc:

Description

This is a proposal for an option either overall, or per torrent, that allows for prioritising in-order downloading of torrent chunks.

Quite simply, depending upon how this option is set, Transmission would switch from downloading by availability (good for the swarm) or downloading chunks in order of first to last (earlier elements of a torrent are available sooner, potentially even usable if a file is capable of being streamed).

Default priority would have Transmission choose based on availability; i.e - if a torrent's pieces have good availability then it doesn't matter much if you download in-order, whereas for newer/less popular torrents it is more important to download with as much distribution of chunks as possible to ensure availability.

Increasing priority would allow Transmission's behaviour per-torrent (or for all torrents) to be biased towards one behaviour or the other as standard, however, only the highest settings will force Transmission to ignore availability checks (as this is bad for a weak swarm and risks stalling torrents).

For many torrents this would be a useful alternative to individually prioritising files, and should also help to improve performance when using sparse files.

Change History (12)

comment:1 Changed 7 years ago by livings124

  • Resolution set to invalid
  • Status changed from new to closed

For the swarm as a whole, this would be net-negative.

comment:2 Changed 7 years ago by Renara

Firstly, this is no different really from setting different priorities for files (or even excluding some entirely).

Second, if a torrent has good availability, then even if hundreds of peers were to suddenly appear forcing in-order only downloads, then it's highly unlikely that they'd all be downloading at the same speeds (setting in-order only downloads would actually ensure this by limiting their selection of chunks), this means faster in-order only peers will quickly pass slower ones, and thus become available to seed chunks to the slower peers as they catch up.

Finally, as I say, the most basic options are only intended to set a priority for in-order downloading. If availability is poor, then Transmission would still be free to download in a more distributed fashion, the priority simply determines the threshold (number of 100% complete seeders) below which availability is considered to be poor. While I do think a setting to force no threshold at all should be provided as a choice (e.g - if you're determined to stream a torrent), it obviously comes with the caveat that you may force a torrent to stall.

comment:3 Changed 7 years ago by Renara

  • Resolution invalid deleted
  • Status changed from closed to reopened

comment:4 Changed 7 years ago by John Clay

  • Resolution set to invalid
  • Status changed from reopened to closed

comment:5 Changed 7 years ago by Renara

  • Resolution invalid deleted
  • Status changed from closed to reopened

I'm re-opening this again.

To summarise; once a torrent passes a decent amount of availability in the swarm it stops being so important that new peers download blocks randomly. Besides which, if multiple peers are downloading in-order, then they're essentially self-sustaining, as the peers that have the faster download speeds are able to seed to slower in-order downloaders, so as long as there's enough availability to satisfy the faster in-order peers, the slower ones aren't a problem at all.

Besides which, not everyone is going to switch to in-order downloading, and like I say in the proposal, Transmission would still default to distributed downloading if availability is poor. This downloading method could also be set per-torrent rather than globally, so it only applies to certain torrents that may be usable while downloading.

comment:6 Changed 7 years ago by livings124

  • Resolution set to wontfix
  • Status changed from reopened to closed

comment:7 follow-up: Changed 7 years ago by Renara

  • Resolution wontfix deleted
  • Status changed from closed to reopened

Thanks so much for just closing this without comment rather than addressing my points; it really makes me feel like this project welcomes feedback =/

comment:8 in reply to: ↑ 7 Changed 7 years ago by John Clay

  • Resolution set to wontfix
  • Status changed from reopened to closed

Replying to Renara:

Thanks so much for just closing this without comment rather than addressing my points; it really makes me feel like this project welcomes feedback =/

This is still a net-negative for the swarm.

comment:9 Changed 7 years ago by Renara

  • Resolution wontfix deleted
  • Status changed from closed to reopened

And why exactly?

As I pointed out; over time the swarm will still gain additional complete copies of the torrents, so availability still increases. Besides which, even if there were a sudden surge of clients all downloading in-order, then they effectively cater for themselves as some pull ahead, increasing availability of the most in-demand chunks of the torrent(s) for others.

The only cases where availability would actually be affected would be if in-order downloaders kept dropping part way through, but the proportion doing that would have to be extremely high to have any real impact, and it would only matter if there aren't any out-of-order downloaders in the swarm. As I put in my proposal the feature would switch to out-of-order downloading if availability was particularly poor, but once a torrent reaches a critical mass it simply doesn't matter if someone wants to download everything in order.

comment:10 Changed 7 years ago by livings124

  • Resolution set to invalid
  • Status changed from reopened to closed

It will be a lot hard for the swarm to gain additional complete copies of the torrents. In fact, if there's a single seeder and they leave while everyone's half done, no one can finish.

comment:11 Changed 7 years ago by Renara

  • Resolution invalid deleted
  • Status changed from closed to reopened

This is why I specified in the original post that, by default, the feature would only download in order once the number of available copies reaches a certain amount. So if you're trying to download a brand new torrent it would still do so out-of-order until the number of copies is high enough. The setting itself is used to determine what that threshold is; not sure what the sweet spot would be, probably should be based on the size of the torrent.

If a user forces in-order downloading without considering the consequences then that's their own problem, but that particular ability would be best kept hidden from GUIs, e.g - presented to the user would option be something like "Attempt to download torrent data in order", emphasis on attempt.

comment:12 Changed 7 years ago by livings124

  • Resolution set to wontfix
  • Status changed from reopened to closed

I'm sorry - we're not implementing in-order downloading. The fact that you suggest it being a hidden option is proof enough that we don't need it.

Note: See TracTickets for help on using tickets.