summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-01-15 23:50:12 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-01-15 23:50:12 +0900
commit1c72b80aa53673ea9fda0012bf3dadf77ae76b30 (patch)
tree3824cc313e7ab8ae048d31804a27df5cb34c3809
parentbf4ea63a6692719344580dc33fd9113506d0027c (diff)
Revert 53dde0a9
Reverted to the original strategy, but some values are tweaked. Without TCP_NODELAY, 53dde0a9 does not work well.
-rw-r--r--src/BtConstants.h2
-rw-r--r--src/DefaultBtInteractive.cc28
-rw-r--r--src/DefaultBtInteractive.h2
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<size_t> haveIndexes_;
Timer haveLastSent_;
- int baseSpeed_;
-
static const time_t FLOODING_CHECK_INTERVAL = 5;
void addBitfieldMessageToQueue();