From fc36d7fdf2bf012e6ac60f62875a4a5973af4970 Mon Sep 17 00:00:00 2001
From: Justin Clarke Casey
Date: Wed, 5 Nov 2008 19:23:59 +0000
Subject: * Set default client throttle multiplier to 2 (old value was
effectively 8). See OpenSim.ini.example for details as to what this means *
Really this should be 1, but I think that this would be too slow compared to
a Second Life server until we improve our ability to send textures of
variable quality * This may improve one aspect of sim performance where there
are many avatars. However, there are still other performance problems that
are unrelated to this change * Value may be further tuned * Removed temporary
decals since the multipler setting will stick around now
---
.../Region/ClientStack/LindenUDP/LLPacketQueue.cs | 3 ++-
.../ClientStack/LindenUDP/LLPacketThrottle.cs | 9 +++++----
.../Region/ClientStack/LindenUDP/LLUDPServer.cs | 2 +-
bin/OpenSim.ini.example | 23 +++++++++++++++++-----
4 files changed, 26 insertions(+), 11 deletions(-)
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs
index 317d852..9aa27ec 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs
@@ -127,7 +127,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
TotalThrottle
= new LLPacketThrottle(
- totalThrottleSettings.Min, totalThrottleSettings.Max, totalThrottleSettings.Current, userSettings.ClientThrottleMultipler);
+ totalThrottleSettings.Min, totalThrottleSettings.Max, totalThrottleSettings.Current,
+ userSettings.ClientThrottleMultipler);
throttleTimer = new Timer((int) (throttletimems/throttleTimeDivisor));
throttleTimer.Elapsed += new ElapsedEventHandler(ThrottleTimerElapsed);
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketThrottle.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketThrottle.cs
index 2c67d63..305a984 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketThrottle.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketThrottle.cs
@@ -36,7 +36,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private int m_currentBitsSent;
///
- /// Temporary field
+ /// Value with which to multiply all the throttle fields
///
private float m_throttleMultiplier;
@@ -47,8 +47,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
///
///
///
- /// A temporary parameter that's ends up multiplying all throttle settings. This only exists as a path to
- /// using real throttle values instead of the *8 multipler that we had been using (bytes instead of btis)
+ /// A parameter that's ends up multiplying all throttle settings. An alternative solution would have been
+ /// to multiply all the parameters by this before giving them to the constructor. But doing it this way
+ /// represents the fact that the multiplier is a hack that pumps data to clients much faster than the actual
+ /// settings that we are given.
///
public LLPacketThrottle(int min, int max, int throttle, float throttleMultiplier)
{
@@ -81,7 +83,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
return m_currentBitsSent;
}
- // Properties
public int Max
{
get { return m_maxAllowableThrottle; }
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
index 1779d54..f777e0e 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
@@ -149,7 +149,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
AssetCache assetCache, AgentCircuitManager circuitManager)
{
ClientStackUserSettings userSettings = new ClientStackUserSettings();
- userSettings.ClientThrottleMultipler = 8;
+ userSettings.ClientThrottleMultipler = 2; // default. TODO: Should be a constant somewhere
IConfig config = configSource.Configs["ClientStack.LindenUDP"];
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example
index c8d1d5d..8c9ee41 100644
--- a/bin/OpenSim.ini.example
+++ b/bin/OpenSim.ini.example
@@ -205,11 +205,24 @@ inventory_server_url = "http://127.0.0.1:8004"
messaging_server_url = "http://127.0.0.1:8006"
[ClientStack.LindenUDP]
-; Adjust the multiplier applied to all client throttles
-; This setting only exists because we're probably over throttling by a factor of 8. Setting this to
-; 1 uses the real throttle values, but this may be revealing other bugs, so is currently included as test setting
-; You probably don't want to change this.
-client_throttle_multiplier = 8;
+; This is the multiplier applied to all client throttles for outgoing UDP network data
+; If it is set to 1, then we obey the throttle settings as given to us by the client. If it is set to 3, for example, then we
+; multiply that setting by 3 (e.g. if the client gives us a setting of 250 kilobits per second then we
+; will actually push down data at a maximum rate of 750 kilobits per second).
+;
+; In principle, setting a multiplier greater than 1 will allow data to be pushed down to a client much faster
+; than its UI allows the setting to go. This may be okay in some situations, such as standalone OpenSim
+; applications on a LAN. However, the greater the multipler, the higher the risk of packet drop, resulting
+; in symptoms such as missing terrain or objects. A much better solution is to change the client UI to allow
+; higher network bandwidth settings directly, though this isn't always possible.
+;
+; Currently this setting is 2 by default because we currently send much more texture data than is strictly
+; necessary. A setting of 1 could result in slow texture transfer. This will be fixed when the transfer
+; of textures at different levels of quality is improved.
+;
+; Pre r7113, this setting was not exposed but was effectively 8. You may want to try this if you encounter
+; unexpected difficulties
+client_throttle_multiplier = 2;
[Chat]
whisper_distance = 10
--
cgit v1.1