Opened 12 years ago

Closed 12 years ago

Last modified 12 years ago

#2548 closed Enhancement (fixed)

T's request queue can send out too many duplicate requests

Reported by: charles Owned by: charles
Priority: Normal Milestone: 1.80
Component: libtransmission Version: 1.76
Severity: Normal Keywords:
Cc:

Description

Issue raised by Hexum in the forums at <http://forum.transmissionbt.com/viewtopic.php?p=41572#p41572>.

As the summary says, the request queue can send out too many duplicate requests to separate peers. I tested this by downloading the same torrent 3 times in 1.76 and got an average of 7% duplicate requests. When I ran the same test with this patch, the result was 1.8% duplicates.

Change History (6)

comment:1 Changed 12 years ago by charles

  • Status changed from new to assigned

Experimental commit added to trunk in r9465.

comment:2 Changed 12 years ago by charles

  • Resolution set to fixed
  • Status changed from assigned to closed

Seems to be working fine. No complaints yet, so closing this ticket as fixed.

comment:3 Changed 12 years ago by charles

  • Resolution fixed deleted
  • Status changed from closed to reopened

Ironically, in some cases this patch does exactly what it set out not to do, at least in some cases. At least it does so in a much more controllable way. *rolls eyes*

Reopening....

comment:4 Changed 12 years ago by charles

12:13 < CIA-39> charles * r9782 libtransmission/peer-mgr.c: (trunk libT) #2548 "T's request queue can send out too many duplicate requests" -- experimental revision to r9465 to address further overdownloading issues

comment:5 Changed 12 years ago by charles

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

Surprisingly enough, r9782 seems to work fairly well. However there is an off-by-one when deciding how many peers we'll request a block from during endgame, fixed in r9783

comment:6 Changed 12 years ago by charles

charles * r9793 /trunk/ (10 files in 3 dirs): (trunk) #2548 "T's request queue can send out too many duplicate requests" --

  1. fix r9465 implementation bug that caused some peers to get starved of

requests if they rejected a request or choked, then unchoked us.

  1. increase a block request's TTL by 15 seconds to reduce cancel/req cycles between two or more blocks
  2. add a debug mode to the GTK+ client's peer tab to watch the pending requests counts both up & down
Note: See TracTickets for help on using tickets.