qbittorrent / qBittorrent

qBittorrent BitTorrent client
https://www.qbittorrent.org
Other
26.84k stars 3.87k forks source link

Prefer seeding torrents with a low number of available seeds #9063

Open username-password opened 6 years ago

username-password commented 6 years ago

The idea behind this is to prevent torrents which lack seeds from dying instead of wasting bandwidth seeding torrents that have an excess number of seeds already. In my current setup qBittorrent is allocating most of its seeding bandwidth to a large number of popular torrents that arguably don't need any additional seeding, while a small number of torrents that are lacking seeds but have peers rarely show up in the upload slots and remain in a state of limbo. Note that this is not a connectivity problem. An option to prioritize torrents for seeding according to their seed counts in reverse order, either automatically in the background or through a hard limit option that lets the user specify to only seed torrents that have less than X number of seeds, could solve this problem.

RodJLinux commented 6 years ago

I'd like this function myself. I'm limited by how much bandwidth I can use for qBittorrent and I always favour sharing torrents that have very few seeds, usually for a long period of time.

AgentRev commented 3 years ago

One way to implement this would be within the Torrent Queueing section, something like:

For uploads, prioritize these torrents:     [checkbox] Number of seeds is below or equal to [textbox]     [checkbox] Peer-to-seed ratio is above or equal to [textbox]

This would allow the torrent queueing module to passively prioritize torrents where demand is most needed, rather than having to implement a more complex, separate priority system.

nicodemusjls commented 3 years ago

I've been wanting this feature for decades. To be honest, I find it surprising none of the torrent clients seem to already have it. I'd think this would be a standard with default settings upon install as it has the potential of helping maintain low seeded torrents across the entire technology. And, it doesn't seem to me that this would be a complex add. Periodically, like every hour, it would check the seed count or peer-to-seed ratios of all torrents and re-prioritize.

arnabanimesh commented 3 years ago

libtorrent-rasterbar already uses a sound logic to manage seeding queue. Click here to know more.

If qbittorrent already uses unmodified libtorrent-rasterbar, it may have been already implemented by default.

This issue should be closed if that's the case.

AgentRev commented 3 years ago

@arnabanimesh I looked at the code, and libtorrent does indeed seem to have a seeding priority system (when queueing is enabled), with torrents that are not seeded by anyone else ranked highest, and other torrents ranked according to their leechers-to-seeders ratio.

However, it does not prioritize "nonzero-but-still-low-seed" torrents. For example, a torrent with 100 seeders and 1000 leechers will get priority over a torrent with 1 seeder and 9 leechers.

Nonetheless, the ability to explicitly prioritize low-seed torrents would need to be implemented on the libtorrent side first.

milahu commented 7 months ago

when queueing is enabled

aah, so enable torrent queueing with 999999999 maximum active torrents or something more cpu-friendly like 200

libtorrent-rasterbar already uses a sound logic to manage seeding queue. Click here to know more.

link is dead. current: libtorrent API Documentation # seeding queue

The seeding queue does not use torrent_status::queue_position to determine which torrent to seed. Instead, it estimates the demand for the torrent to be seeded. A torrent with few other seeds and many downloaders is assumed to have a higher demand of more seeds than one with many seeds and few downloaders.

karasuhebi commented 5 months ago

Nonetheless, the ability to explicitly prioritize low-seed torrents would need to be implemented on the libtorrent side first.

So this should be an Issue on the libtorrent repo as well, then?