In "show throttles", show the maximum drip rate. This shows whether a client is being throttled due to past poor performance.
parent
ae53c6b834
commit
d616f75d9a
|
@ -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>();
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue