aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorUbitUmarov2014-08-28 18:51:55 +0100
committerUbitUmarov2014-08-28 18:51:55 +0100
commit9839904ebe82f9c7a2084d7d7cf4e5399c679ce5 (patch)
treea434ad2b9d91406cdb964c1398abb385057f9335
parent add some functions for estimation of number of bytes that can be send in a c... (diff)
downloadopensim-SC-9839904ebe82f9c7a2084d7d7cf4e5399c679ce5.zip
opensim-SC-9839904ebe82f9c7a2084d7d7cf4e5399c679ce5.tar.gz
opensim-SC-9839904ebe82f9c7a2084d7d7cf4e5399c679ce5.tar.bz2
opensim-SC-9839904ebe82f9c7a2084d7d7cf4e5399c679ce5.tar.xz
try to make sense of throttle rate limits
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs16
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/ThrottleRates.cs3
2 files changed, 15 insertions, 4 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs
index 7c55b37..84c0d03 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs
@@ -217,6 +217,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
217 m_maxRTO = maxRTO; 217 m_maxRTO = maxRTO;
218 218
219 // Create a token bucket throttle for this client that has the scene token bucket as a parent 219 // Create a token bucket throttle for this client that has the scene token bucket as a parent
220 // 2500000 bits/s max
220 m_throttleClient = new AdaptiveTokenBucket(parentThrottle, rates.Total, rates.AdaptiveThrottlesEnabled); 221 m_throttleClient = new AdaptiveTokenBucket(parentThrottle, rates.Total, rates.AdaptiveThrottlesEnabled);
221 // Create a token bucket throttle for the total categary with the client bucket as a throttle 222 // Create a token bucket throttle for the total categary with the client bucket as a throttle
222 m_throttleCategory = new TokenBucket(m_throttleClient, 0); 223 m_throttleCategory = new TokenBucket(m_throttleClient, 0);
@@ -224,7 +225,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
224 m_throttleCategories = new TokenBucket[THROTTLE_CATEGORY_COUNT]; 225 m_throttleCategories = new TokenBucket[THROTTLE_CATEGORY_COUNT];
225 226
226 m_cannibalrate = rates.CannibalizeTextureRate; 227 m_cannibalrate = rates.CannibalizeTextureRate;
227 228
229 long totalrate = 0;
230 long catrate = 0;
231
228 for (int i = 0; i < THROTTLE_CATEGORY_COUNT; i++) 232 for (int i = 0; i < THROTTLE_CATEGORY_COUNT; i++)
229 { 233 {
230 ThrottleOutPacketType type = (ThrottleOutPacketType)i; 234 ThrottleOutPacketType type = (ThrottleOutPacketType)i;
@@ -232,9 +236,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
232 // Initialize the packet outboxes, where packets sit while they are waiting for tokens 236 // Initialize the packet outboxes, where packets sit while they are waiting for tokens
233 m_packetOutboxes[i] = new DoubleLocklessQueue<OutgoingPacket>(); 237 m_packetOutboxes[i] = new DoubleLocklessQueue<OutgoingPacket>();
234 // Initialize the token buckets that control the throttling for each category 238 // Initialize the token buckets that control the throttling for each category
235 m_throttleCategories[i] = new TokenBucket(m_throttleCategory, rates.GetRate(type)); 239 catrate = rates.GetRate(type);
240 totalrate += catrate;
241 m_throttleCategories[i] = new TokenBucket(m_throttleCategory, catrate);
236 } 242 }
237 243
244 m_throttleCategory.RequestedDripRate = totalrate;
245
238 // Default the retransmission timeout to one second 246 // Default the retransmission timeout to one second
239 RTO = m_defaultRTO; 247 RTO = m_defaultRTO;
240 248
@@ -380,7 +388,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
380 task = task + (int)(m_cannibalrate * texture); 388 task = task + (int)(m_cannibalrate * texture);
381 texture = (int)((1 - m_cannibalrate) * texture); 389 texture = (int)((1 - m_cannibalrate) * texture);
382 390
383 // int total = resend + land + wind + cloud + task + texture + asset; 391 int total = resend + land + wind + cloud + task + texture + asset;
384 392
385 //m_log.DebugFormat("[LLUDPCLIENT]: {0} is setting throttles. Resend={1}, Land={2}, Wind={3}, Cloud={4}, Task={5}, Texture={6}, Asset={7}, Total={8}", 393 //m_log.DebugFormat("[LLUDPCLIENT]: {0} is setting throttles. Resend={1}, Land={2}, Wind={3}, Cloud={4}, Task={5}, Texture={6}, Asset={7}, Total={8}",
386 // AgentID, resend, land, wind, cloud, task, texture, asset, total); 394 // AgentID, resend, land, wind, cloud, task, texture, asset, total);
@@ -409,6 +417,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
409 bucket = m_throttleCategories[(int)ThrottleOutPacketType.Texture]; 417 bucket = m_throttleCategories[(int)ThrottleOutPacketType.Texture];
410 bucket.RequestedDripRate = texture; 418 bucket.RequestedDripRate = texture;
411 419
420 m_throttleCategory.RequestedDripRate = total;
421
412 // Reset the packed throttles cached data 422 // Reset the packed throttles cached data
413 m_packedThrottles = null; 423 m_packedThrottles = null;
414 } 424 }
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/ThrottleRates.cs b/OpenSim/Region/ClientStack/Linden/UDP/ThrottleRates.cs
index e5bae6e..2b307c7 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/ThrottleRates.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/ThrottleRates.cs
@@ -80,7 +80,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
80 Texture = throttleConfig.GetInt("texture_default", 18500); 80 Texture = throttleConfig.GetInt("texture_default", 18500);
81 Asset = throttleConfig.GetInt("asset_default", 10500); 81 Asset = throttleConfig.GetInt("asset_default", 10500);
82 82
83 Total = throttleConfig.GetInt("client_throttle_max_bps", 0); 83 // 2500000 bps max
84 Total = throttleConfig.GetInt("client_throttle_max_bps",312500);
84 85
85 AdaptiveThrottlesEnabled = throttleConfig.GetBoolean("enable_adaptive_throttles", false); 86 AdaptiveThrottlesEnabled = throttleConfig.GetBoolean("enable_adaptive_throttles", false);
86 87