In "show throttles", show the maximum drip rate. This shows whether a client is being throttled due to past poor performance.

bullet-2.82
Oren Hurvitz 2014-06-29 18:49:27 +03:00
parent 5d53412766
commit af3498efdb
4 changed files with 20 additions and 14 deletions

View File

@ -54,6 +54,7 @@ namespace OpenSim.Framework
public int assetThrottle; public int assetThrottle;
public int textureThrottle; public int textureThrottle;
public int totalThrottle; public int totalThrottle;
public int maxThrottle;
public Dictionary<string, int> SyncRequests = new Dictionary<string,int>(); public Dictionary<string, int> SyncRequests = new Dictionary<string,int>();
public Dictionary<string, int> AsyncRequests = new Dictionary<string,int>(); public Dictionary<string, int> AsyncRequests = new Dictionary<string,int>();

View File

@ -202,7 +202,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// Create a token bucket throttle for this client that has the scene token bucket as a parent // Create a token bucket throttle for this client that has the scene token bucket as a parent
m_throttleClient = new AdaptiveTokenBucket(parentThrottle, rates.Total, rates.AdaptiveThrottlesEnabled); m_throttleClient = new AdaptiveTokenBucket(parentThrottle, rates.Total, rates.AdaptiveThrottlesEnabled);
// Create a token bucket throttle for the total categary with the client bucket as a throttle // Create a token bucket throttle for the total category with the client bucket as a throttle
m_throttleCategory = new TokenBucket(m_throttleClient, 0); m_throttleCategory = new TokenBucket(m_throttleClient, 0);
// Create an array of token buckets for this clients different throttle categories // Create an array of token buckets for this clients different throttle categories
m_throttleCategories = new TokenBucket[THROTTLE_CATEGORY_COUNT]; m_throttleCategories = new TokenBucket[THROTTLE_CATEGORY_COUNT];
@ -262,6 +262,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
m_info.assetThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Asset].DripRate; m_info.assetThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Asset].DripRate;
m_info.textureThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Texture].DripRate; m_info.textureThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Texture].DripRate;
m_info.totalThrottle = (int)m_throttleCategory.DripRate; m_info.totalThrottle = (int)m_throttleCategory.DripRate;
m_info.maxThrottle = (int)m_throttleClient.MaxDripRate;
return m_info; return m_info;
} }

View File

@ -1,4 +1,4 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders. * See CONTRIBUTORS.TXT for a full list of copyright holders.
* *
@ -335,13 +335,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// greater than this. // greater than this.
// </summary> // </summary>
protected Int64 m_maxDripRate = 0; protected Int64 m_maxDripRate = 0;
protected Int64 MaxDripRate public Int64 MaxDripRate
{ {
get { return (m_maxDripRate == 0 ? m_totalDripRequest : m_maxDripRate); } get { return (m_maxDripRate == 0 ? m_totalDripRequest : m_maxDripRate); }
set { m_maxDripRate = (value == 0 ? 0 : Math.Max(value,m_minimumFlow)); } protected set { m_maxDripRate = (value == 0 ? 0 : Math.Max(value,m_minimumFlow)); }
} }
private bool m_enabled = false; public bool Enabled { get; private set; }
// <summary> // <summary>
// //
@ -362,9 +362,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// </summary> // </summary>
public AdaptiveTokenBucket(TokenBucket parent, Int64 maxDripRate, bool enabled) : base(parent,maxDripRate) public AdaptiveTokenBucket(TokenBucket parent, Int64 maxDripRate, bool enabled) : base(parent,maxDripRate)
{ {
m_enabled = enabled; Enabled = enabled;
if (m_enabled) if (Enabled)
{ {
// m_log.DebugFormat("[TOKENBUCKET] Adaptive throttle enabled"); // m_log.DebugFormat("[TOKENBUCKET] Adaptive throttle enabled");
MaxDripRate = maxDripRate; MaxDripRate = maxDripRate;
@ -378,7 +378,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void ExpirePackets(Int32 count) public void ExpirePackets(Int32 count)
{ {
// m_log.WarnFormat("[ADAPTIVEBUCKET] drop {0} by {1} expired packets",AdjustedDripRate,count); // m_log.WarnFormat("[ADAPTIVEBUCKET] drop {0} by {1} expired packets",AdjustedDripRate,count);
if (m_enabled) if (Enabled)
AdjustedDripRate = (Int64) (AdjustedDripRate / Math.Pow(2,count)); AdjustedDripRate = (Int64) (AdjustedDripRate / Math.Pow(2,count));
} }
@ -387,7 +387,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// </summary> // </summary>
public void AcknowledgePackets(Int32 count) public void AcknowledgePackets(Int32 count)
{ {
if (m_enabled) if (Enabled)
AdjustedDripRate = AdjustedDripRate + count; AdjustedDripRate = AdjustedDripRate + count;
} }
} }

View File

@ -487,7 +487,8 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden
report.Append(GetColumnEntry("Type", maxTypeLength, columnPadding)); report.Append(GetColumnEntry("Type", maxTypeLength, columnPadding));
report.AppendFormat( report.AppendFormat(
"{0,7} {1,8} {2,7} {3,7} {4,7} {5,7} {6,9} {7,7}\n", "{0,8} {1,7} {2,8} {3,7} {4,7} {5,7} {6,7} {7,9} {8,7}\n",
"Max",
"Total", "Total",
"Resend", "Resend",
"Land", "Land",
@ -499,7 +500,8 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden
report.AppendFormat("{0,-" + totalInfoFieldsLength + "}", ""); report.AppendFormat("{0,-" + totalInfoFieldsLength + "}", "");
report.AppendFormat( report.AppendFormat(
"{0,7} {1,8} {2,7} {3,7} {4,7} {5,7} {6,9} {7,7}", "{0,8} {1,7} {2,8} {3,7} {4,7} {5,7} {6,7} {7,9} {8,7}\n",
"kb/s",
"kb/s", "kb/s",
"kb/s", "kb/s",
"kb/s", "kb/s",
@ -548,7 +550,8 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden
report.Append(GetColumnEntry(isChild ? "Cd" : "Rt", maxTypeLength, columnPadding)); report.Append(GetColumnEntry(isChild ? "Cd" : "Rt", maxTypeLength, columnPadding));
report.AppendFormat( report.AppendFormat(
"{0,7} {1,8} {2,7} {3,7} {4,7} {5,7} {6,9} {7,7}", "{0,8} {1,7} {2,8} {3,7} {4,7} {5,7} {6,7} {7,9} {8,7}",
(ci.maxThrottle * 8) / 1000,
(ci.totalThrottle * 8) / 1000, (ci.totalThrottle * 8) / 1000,
(ci.resendThrottle * 8) / 1000, (ci.resendThrottle * 8) / 1000,
(ci.landThrottle * 8) / 1000, (ci.landThrottle * 8) / 1000,
@ -584,7 +587,8 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden
ThrottleRates throttleRates = udpServer.ThrottleRates; ThrottleRates throttleRates = udpServer.ThrottleRates;
report.AppendFormat( report.AppendFormat(
"{0,7} {1,8} {2,7} {3,7} {4,7} {5,7} {6,9} {7,7}", "{0,8} {1,7} {2,8} {3,7} {4,7} {5,7} {6,7} {7,9} {8,7}",
"-",
(throttleRates.Total * 8) / 1000, (throttleRates.Total * 8) / 1000,
(throttleRates.Resend * 8) / 1000, (throttleRates.Resend * 8) / 1000,
(throttleRates.Land * 8) / 1000, (throttleRates.Land * 8) / 1000,