While the current setting works well on the whole, its not granular enough for large torrents with a mixture of file sizes.
Many torrents of comparable sizes have pieces set anywhere between 512KB and 16MB and contain a variety of huge files of a couple of pieces to 100s if not 1000s of pieces. i.e Setting a current setting to around 50% (manually worked out) of the pieces in large files means BBT can spend ages trying to get all the smaller files because they are now all set to high. Fine if the torrent is healthy but many aren't, often I'd rather not set the the smaller files to high and see if I can grab data for the larger files from that 1 proverbial guy in the middle of nowhere using a 1Mbit connection that's the only seed.
Proposal 1 - Would it be possible to have an option to set to high when a file has reached a percentage of the file size (rounded up to the nearest piece OFC), or if per file option is not possible...?
Proposal 2 - Perhaps a per torrent setting that effectively works out the median file size (# of pieces) of the torrent and masking out small files under a certain size/# of pieces and use that instead? (ie a lazy way of calculating median file size and using a percentage of that on only the files big enough to matter).
Again I don't know if this is possible as it too would mean exempting individual files (the small masked ones) from being boosted. But I suppose a simple change to logic from
"if remaining <= number" then set high
to
"if remaining <= number AND filesize > masksize" then set high
Apologies because I'm rambling, I haven't programmed anything seriously for atleast a couple of decades. ;-)
Anyway...
For example...
ATM say I have a torrent with 16MB pieces and 4 files as such as
A - 1.60GB file (100 pieces)
B - 640MB (40) pieces
C - 128MB file (8 pieces)
D- 64MB file (4 pieces)
I set the # of pieces left to trigger at 25 and all B,C and D now all revert to high and A doesn't get a look-in because its doesn't get boosted high until it reaches 1.2GB done. All that time is spent downloading the smaller files for most of the session because A is still "normal". Thats fine if B,C and D are making good progress, but that is often not the case.
What I propose (Prop. 1)...
Same files as above but now I set a % of 25% left to download instead of 25 pieces
So now A can boost high at 25 pieces left, B at 10 pieces left, C at 2 pieces and D at 1 piece.
Now all the files only get boosted high if they are successfully being downloaded, ie they have "proven" successful by reaching 75% complete. Where as before (current system) A (at normal) was having to fight higher priority files (B,C and D as it is now) for priority from the start and if those other files (B,C and D) aren't downloading quick enough despite being high they potentially futher cripple A's progress while boosting high for data they (B,C and D) are unlikely to get before A can get boosted too.
Might seem silly for just 4 files here, but I think it could work well for torrents with 100x more files that have individual files much larger and and many smaller files.
Thanks
While the current setting works well on the whole, its not granular enough for large torrents with a mixture of file sizes.
Many torrents of comparable sizes have pieces set anywhere between 512KB and 16MB and contain a variety of huge files of a couple of pieces to 100s if not 1000s of pieces. i.e Setting a current setting to around 50% (manually worked out) of the pieces in large files means BBT can spend ages trying to get all the smaller files because they are now all set to high. Fine if the torrent is healthy but many aren't, often I'd rather not set the the smaller files to high and see if I can grab data for the larger files from that 1 proverbial guy in the middle of nowhere using a 1Mbit connection that's the only seed.
Proposal 1 - Would it be possible to have an option to set to high when a file has reached a percentage of the file size (rounded up to the nearest piece OFC), or if per file option is not possible...?
Proposal 2 - Perhaps a per torrent setting that effectively works out the median file size (# of pieces) of the torrent and masking out small files under a certain size/# of pieces and use that instead? (ie a lazy way of calculating median file size and using a percentage of that on only the files big enough to matter).
Again I don't know if this is possible as it too would mean exempting individual files (the small masked ones) from being boosted. But I suppose a simple change to logic from
"if remaining <= number" then set high
to
"if remaining <= number AND filesize > masksize" then set high
Apologies because I'm rambling, I haven't programmed anything seriously for atleast a couple of decades. ;-)
Anyway...
For example...
ATM say I have a torrent with 16MB pieces and 4 files as such as
A - 1.60GB file (100 pieces)
B - 640MB (40) pieces
C - 128MB file (8 pieces)
D- 64MB file (4 pieces)
I set the # of pieces left to trigger at 25 and all B,C and D now all revert to high and A doesn't get a look-in because its doesn't get boosted high until it reaches 1.2GB done. All that time is spent downloading the smaller files for most of the session because A is still "normal". Thats fine if B,C and D are making good progress, but that is often not the case.
What I propose (Prop. 1)...
Same files as above but now I set a % of 25% left to download instead of 25 pieces
So now A can boost high at 25 pieces left, B at 10 pieces left, C at 2 pieces and D at 1 piece.
Now all the files only get boosted high if they are successfully being downloaded, ie they have "proven" successful by reaching 75% complete. Where as before (current system) A (at normal) was having to fight higher priority files (B,C and D as it is now) for priority from the start and if those other files (B,C and D) aren't downloading quick enough despite being high they potentially futher cripple A's progress while boosting high for data they (B,C and D) are unlikely to get before A can get boosted too.
Might seem silly for just 4 files here, but I think it could work well for torrents with 100x more files that have individual files much larger and and many smaller files.
Thanks