Peer-Selection Logic: Maximizing Speed| Gigabit user, seed bandwidth sits unused
Posted: Thu Aug 29, 2019 12:03 am
[tldr @ bottom]
Hello,
I have a symmetrical, Gigabit connection (1,000 Mbps Download/1,000 Mbps Upload) that sits massively underutilized.
I would love to be able to share back with the community that has helped me so much, especially when I was still a starving student @ University. Admittedly, the desire to give back was actually one of the biggest reasons I even wanted such a ridiculously fast connection. I want to be able to Seed meaningful files (like textbooks, documentaries, thought-provoking or feel-good movies, etc) to help contribute to a better society online as I do in-person.
The highest I've seen my Upload total speed reach is ~37.5 MB/s (so, 300 Mbit/s) and this was only once, ever, for maybe a few minutes.
The vast majority of the time it just sits there at a couple-few MB/s, despite there being tons of Peers that need the files (Leeches).
Individually, the majority of Peers I connect to download at no more than ~200-300 KB/s, which is just downright hard to believe. This includes users who are also in the same country (United States).
I am directly connected through Ethernet, and yes, my speed is verified to be very fast (consistently ~940 Mbits+ on both Download AND Upload).
What doesn't make sense to me is that here I sit, a single individual, with enough Bandwidth to MAX out virtually anybody's connection numerous times over - and yet my Bandwidth just sits here, largely unutilized. I've tweaked my settings (only ever considering the tweak if the source was one of seemingly few other Gigabit users, or the discussion was explicitly for ultra-high speed connections) and yet nothing seems to do much. I'm not hitting my max connections per torrent, nobody's choked, I'm using an ephemeral port (ie. one above 49152), I've tried sprinkling holy water on my ethernet cable, on and on and yet still my bandwidth sits here almost entirely unutilized.
And so this brings me to my question - does the program relay any information about my connection's bandwidth? So that others may know "there's a guy over here that I could make ONE connection to, who could MAX out my bandwidth and get the file super fast from.. the fastest that'd be possible on my connection"?
If it doesn't, is there a reason why not? It would seem like a huge efficiency improvement - making use of peers in the swarm such as myself that have tons of bandwidth to spare, and would love to share around. If it's doing this to me, I must imagine it's doing it to most other users too. It can't be because the program doesn't want to saturate our connection/bandwidth, because that's what certain settings are for (ex: the 'Rate Limits' in Options > Speed) - not to mention if a user were to be complaining about their internet being slow, they would just... close the program that's using a lot of it.
I would imagine a sort of 'speed test' type implementation whereby the program is capable of verifying your connection's bandwidth, and thereby broadcasting it as so. This would prevent an otherwise inevitable situation where people randomly think to tell the program they have <this speed> when in reality they have <that speed> because they saw on a YouTube video that it would "bOoSt ThEiR SpEEd 700%!"
TLDR: This post is about peer-selection logic. Why doesn't the program tell people that I have TONS of bandwidth ready to go/max out their connections with? Detailed background info and live case examples above.
Hello,
I have a symmetrical, Gigabit connection (1,000 Mbps Download/1,000 Mbps Upload) that sits massively underutilized.
I would love to be able to share back with the community that has helped me so much, especially when I was still a starving student @ University. Admittedly, the desire to give back was actually one of the biggest reasons I even wanted such a ridiculously fast connection. I want to be able to Seed meaningful files (like textbooks, documentaries, thought-provoking or feel-good movies, etc) to help contribute to a better society online as I do in-person.
The highest I've seen my Upload total speed reach is ~37.5 MB/s (so, 300 Mbit/s) and this was only once, ever, for maybe a few minutes.
The vast majority of the time it just sits there at a couple-few MB/s, despite there being tons of Peers that need the files (Leeches).
Individually, the majority of Peers I connect to download at no more than ~200-300 KB/s, which is just downright hard to believe. This includes users who are also in the same country (United States).
I am directly connected through Ethernet, and yes, my speed is verified to be very fast (consistently ~940 Mbits+ on both Download AND Upload).
What doesn't make sense to me is that here I sit, a single individual, with enough Bandwidth to MAX out virtually anybody's connection numerous times over - and yet my Bandwidth just sits here, largely unutilized. I've tweaked my settings (only ever considering the tweak if the source was one of seemingly few other Gigabit users, or the discussion was explicitly for ultra-high speed connections) and yet nothing seems to do much. I'm not hitting my max connections per torrent, nobody's choked, I'm using an ephemeral port (ie. one above 49152), I've tried sprinkling holy water on my ethernet cable, on and on and yet still my bandwidth sits here almost entirely unutilized.
- For example, if I look at one of my torrents right now, it states that there are 152 Seeds, and 19 Leeches currently, 2 of which I'm connected to: Seeds 0(152), Peers 2(19).
It is currently uploading to those two peers at 79.1 KB/s total. They are both located in the United States (same country), so the data path can only be going so far. - If I look at another example torrent right now, it states that there are 3 Seeds, and 7 Leeches, 1 of which I'm connected to: Seeds 0(3), Peers 1(7).
It is currently uploading to that 1 Peer at 103.7 KB/s total. They are also in the United States, and an IP Lookup puts their general location actually quite near me.
And so this brings me to my question - does the program relay any information about my connection's bandwidth? So that others may know "there's a guy over here that I could make ONE connection to, who could MAX out my bandwidth and get the file super fast from.. the fastest that'd be possible on my connection"?
If it doesn't, is there a reason why not? It would seem like a huge efficiency improvement - making use of peers in the swarm such as myself that have tons of bandwidth to spare, and would love to share around. If it's doing this to me, I must imagine it's doing it to most other users too. It can't be because the program doesn't want to saturate our connection/bandwidth, because that's what certain settings are for (ex: the 'Rate Limits' in Options > Speed) - not to mention if a user were to be complaining about their internet being slow, they would just... close the program that's using a lot of it.
I would imagine a sort of 'speed test' type implementation whereby the program is capable of verifying your connection's bandwidth, and thereby broadcasting it as so. This would prevent an otherwise inevitable situation where people randomly think to tell the program they have <this speed> when in reality they have <that speed> because they saw on a YouTube video that it would "bOoSt ThEiR SpEEd 700%!"
TLDR: This post is about peer-selection logic. Why doesn't the program tell people that I have TONS of bandwidth ready to go/max out their connections with? Detailed background info and live case examples above.