]> source.dussan.org Git - tigervnc.git/commitdiff
Estimate higher bandwidth in slow start 720/head
authorPierre Ossman <ossman@cendio.se>
Thu, 20 Sep 2018 14:35:37 +0000 (16:35 +0200)
committerPierre Ossman <ossman@cendio.se>
Fri, 21 Sep 2018 08:39:52 +0000 (10:39 +0200)
If we are still in slow start then we haven't discovered the actual
bandwidth limit yet. We also rely on the caller causing a bit of
congestion to detect the limit. So report a higher bandwidth estimate
than what we've currently tested in this scenario.

common/rfb/Congestion.cxx

index 8162808b7fa217e1c7c66c301b5882b0f1e11b60..4a784522ae64f6861737625ab3dd93b2d17f5261 100644 (file)
@@ -291,11 +291,20 @@ int Congestion::getUncongestedETA()
 
 size_t Congestion::getBandwidth()
 {
+  size_t bandwidth;
+
   // No measurements yet? Guess RTT of 60 ms
   if (safeBaseRTT == (unsigned)-1)
-    return congWindow * 1000 / 60;
+    bandwidth = congWindow * 1000 / 60;
+  else
+    bandwidth = congWindow * 1000 / safeBaseRTT;
+
+  // We're still probing so guess actual bandwidth is halfway between
+  // the current guess and the next one (slow start doubles each time)
+  if (inSlowStart)
+    bandwidth = bandwidth + bandwidth / 2;
 
-  return congWindow * 1000 / safeBaseRTT;
+  return bandwidth;
 }
 
 void Congestion::debugTrace(const char* filename, int fd)