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