From 1c72b80aa53673ea9fda0012bf3dadf77ae76b30 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Tue, 15 Jan 2013 23:50:12 +0900 Subject: [PATCH] Revert 53dde0a9 Reverted to the original strategy, but some values are tweaked. Without TCP_NODELAY, 53dde0a9 does not work well. --- src/BtConstants.h | 2 +- src/DefaultBtInteractive.cc | 28 ++++++++-------------------- src/DefaultBtInteractive.h | 2 -- 3 files changed, 9 insertions(+), 23 deletions(-) diff --git a/src/BtConstants.h b/src/BtConstants.h index 2aa694d0..609f8f7e 100644 --- a/src/BtConstants.h +++ b/src/BtConstants.h @@ -48,7 +48,7 @@ #define MAX_BLOCK_LENGTH (16*1024) -#define DEFAULT_MAX_OUTSTANDING_REQUEST 2 +#define DEFAULT_MAX_OUTSTANDING_REQUEST 6 #define OUTSTANDING_REQUEST_STEP 6 diff --git a/src/DefaultBtInteractive.cc b/src/DefaultBtInteractive.cc index 83812d3d..06d05b5b 100644 --- a/src/DefaultBtInteractive.cc +++ b/src/DefaultBtInteractive.cc @@ -98,8 +98,7 @@ DefaultBtInteractive::DefaultBtInteractive maxOutstandingRequest_(DEFAULT_MAX_OUTSTANDING_REQUEST), requestGroupMan_(0), tcpPort_(0), - haveLastSent_(global::wallclock()), - baseSpeed_(0) + haveLastSent_(global::wallclock()) {} DefaultBtInteractive::~DefaultBtInteractive() {} @@ -323,24 +322,13 @@ size_t DefaultBtInteractive::receiveMessages() { } } - if(!pieceStorage_->isEndGame() && !pieceStorage_->downloadFinished()) { - if(baseSpeed_ == 0) { - if(countOldOutstandingRequest && - dispatcher_->countOutstandingRequest() == 0) { - baseSpeed_ = peer_->calculateDownloadSpeed(); - maxOutstandingRequest_ *= 2; - } - } else { - int speed = peer_->calculateDownloadSpeed(); - // Double the number of outstanding request if 20% download rate - // increase is observed. - if(baseSpeed_*12 <= speed*10) { - maxOutstandingRequest_ = - std::min((size_t)UB_MAX_OUTSTANDING_REQUEST, - maxOutstandingRequest_*2); - baseSpeed_ = speed; - } - } + if(!pieceStorage_->isEndGame() && + countOldOutstandingRequest > dispatcher_->countOutstandingRequest() && + (countOldOutstandingRequest - dispatcher_->countOutstandingRequest())*4 >= + maxOutstandingRequest_) { + maxOutstandingRequest_ = + std::min((size_t)UB_MAX_OUTSTANDING_REQUEST, + maxOutstandingRequest_*2); } return msgcount; } diff --git a/src/DefaultBtInteractive.h b/src/DefaultBtInteractive.h index 403ea1d4..c96b8663 100644 --- a/src/DefaultBtInteractive.h +++ b/src/DefaultBtInteractive.h @@ -149,8 +149,6 @@ private: std::vector haveIndexes_; Timer haveLastSent_; - int baseSpeed_; - static const time_t FLOODING_CHECK_INTERVAL = 5; void addBitfieldMessageToQueue();