diff options
author | Justin Clarke Casey | 2008-11-03 21:09:30 +0000 |
---|---|---|
committer | Justin Clarke Casey | 2008-11-03 21:09:30 +0000 |
commit | 4ff0c391530ad8ce937d281f4ac6492c760080db (patch) | |
tree | bc00794793c9d0f1c35ea5ed902f0312d2692c22 /OpenSim/Region/ClientStack/LindenUDP | |
parent | * mionr: correct CONTRIBUTORS file for Plugh (diff) | |
download | opensim-SC-4ff0c391530ad8ce937d281f4ac6492c760080db.zip opensim-SC-4ff0c391530ad8ce937d281f4ac6492c760080db.tar.gz opensim-SC-4ff0c391530ad8ce937d281f4ac6492c760080db.tar.bz2 opensim-SC-4ff0c391530ad8ce937d281f4ac6492c760080db.tar.xz |
* Expose a client_throttle_multiplier setting in OpenSim.ini. This multiplier is applied to all the client throttle settings received by the client
* This should probably be 1, but currently by default it is 8, to reflect what was being eon3 in OpenSim before this revision. So if the client requested a maximum throttle
of 1500 kilobits per second, we would actually send out 1500 kilobytes per second
* Adjusting this multiplier down towards 1 may improve your OpenSim experience, though in other situations it may degrade (e.g. if you're using a standalone over high bandwidth
links)
* This is currently a user setting because adjusting it down may currently reveal other OpenSim bugs.
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs | 16 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLPacketThrottle.cs | 36 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | 2 |
3 files changed, 35 insertions, 19 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs index 9abde5d..317d852 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs | |||
@@ -110,13 +110,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
110 | AssetOutgoingPacketQueue = new Queue<LLQueItem>(); | 110 | AssetOutgoingPacketQueue = new Queue<LLQueItem>(); |
111 | 111 | ||
112 | // Set up the throttle classes (min, max, current) in bits per second | 112 | // Set up the throttle classes (min, max, current) in bits per second |
113 | ResendThrottle = new LLPacketThrottle(5000, 100000, 16000); | 113 | ResendThrottle = new LLPacketThrottle(5000, 100000, 16000, userSettings.ClientThrottleMultipler); |
114 | LandThrottle = new LLPacketThrottle(1000, 100000, 2000); | 114 | LandThrottle = new LLPacketThrottle(1000, 100000, 2000, userSettings.ClientThrottleMultipler); |
115 | WindThrottle = new LLPacketThrottle(0, 100000, 0); | 115 | WindThrottle = new LLPacketThrottle(0, 100000, 0, userSettings.ClientThrottleMultipler); |
116 | CloudThrottle = new LLPacketThrottle(0, 100000, 0); | 116 | CloudThrottle = new LLPacketThrottle(0, 100000, 0, userSettings.ClientThrottleMultipler); |
117 | TaskThrottle = new LLPacketThrottle(1000, 800000, 3000); | 117 | TaskThrottle = new LLPacketThrottle(1000, 800000, 3000, userSettings.ClientThrottleMultipler); |
118 | AssetThrottle = new LLPacketThrottle(1000, 800000, 1000); | 118 | AssetThrottle = new LLPacketThrottle(1000, 800000, 1000, userSettings.ClientThrottleMultipler); |
119 | TextureThrottle = new LLPacketThrottle(1000, 800000, 4000); | 119 | TextureThrottle = new LLPacketThrottle(1000, 800000, 4000, userSettings.ClientThrottleMultipler); |
120 | 120 | ||
121 | // Total Throttle trumps all - it is the number of bits in total that are allowed to go out per second. | 121 | // Total Throttle trumps all - it is the number of bits in total that are allowed to go out per second. |
122 | ThrottleSettings totalThrottleSettings = userSettings.TotalThrottleSettings; | 122 | ThrottleSettings totalThrottleSettings = userSettings.TotalThrottleSettings; |
@@ -127,7 +127,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
127 | 127 | ||
128 | TotalThrottle | 128 | TotalThrottle |
129 | = new LLPacketThrottle( | 129 | = new LLPacketThrottle( |
130 | totalThrottleSettings.Min, totalThrottleSettings.Max, totalThrottleSettings.Current); | 130 | totalThrottleSettings.Min, totalThrottleSettings.Max, totalThrottleSettings.Current, userSettings.ClientThrottleMultipler); |
131 | 131 | ||
132 | throttleTimer = new Timer((int) (throttletimems/throttleTimeDivisor)); | 132 | throttleTimer = new Timer((int) (throttletimems/throttleTimeDivisor)); |
133 | throttleTimer.Elapsed += new ElapsedEventHandler(ThrottleTimerElapsed); | 133 | throttleTimer.Elapsed += new ElapsedEventHandler(ThrottleTimerElapsed); |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketThrottle.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketThrottle.cs index 98b613e..2c67d63 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketThrottle.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketThrottle.cs | |||
@@ -34,12 +34,28 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
34 | private int m_currentThrottle; | 34 | private int m_currentThrottle; |
35 | private const int m_throttleTimeDivisor = 7; | 35 | private const int m_throttleTimeDivisor = 7; |
36 | private int m_currentBitsSent; | 36 | private int m_currentBitsSent; |
37 | |||
38 | /// <value> | ||
39 | /// Temporary field | ||
40 | /// </value> | ||
41 | private float m_throttleMultiplier; | ||
37 | 42 | ||
38 | public LLPacketThrottle(int Min, int Max, int Throttle) | 43 | /// <summary> |
44 | /// Constructor. | ||
45 | /// </summary> | ||
46 | /// <param name="min"></param> | ||
47 | /// <param name="max"></param> | ||
48 | /// <param name="throttle"></param> | ||
49 | /// <param name="throttleMultiplier"> | ||
50 | /// A temporary parameter that's ends up multiplying all throttle settings. This only exists as a path to | ||
51 | /// using real throttle values instead of the *8 multipler that we had been using (bytes instead of btis) | ||
52 | /// </param> | ||
53 | public LLPacketThrottle(int min, int max, int throttle, float throttleMultiplier) | ||
39 | { | 54 | { |
40 | m_maxAllowableThrottle = Max; | 55 | m_throttleMultiplier = throttleMultiplier; |
41 | m_minAllowableThrottle = Min; | 56 | m_maxAllowableThrottle = (int)(max * throttleMultiplier); |
42 | m_currentThrottle = Throttle; | 57 | m_minAllowableThrottle = (int)(Min * throttleMultiplier); |
58 | m_currentThrottle = (int)(Throttle * throttleMultiplier); | ||
43 | m_currentBitsSent = 0; | 59 | m_currentBitsSent = 0; |
44 | } | 60 | } |
45 | 61 | ||
@@ -61,9 +77,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
61 | 77 | ||
62 | public int AddBytes(int bytes) | 78 | public int AddBytes(int bytes) |
63 | { | 79 | { |
64 | // XXX: Temporarily treat bytes as bits. This is a temporary revert of r6714 until other underlying issues | 80 | m_currentBitsSent += bytes * 8; |
65 | // are addressed. | ||
66 | m_currentBitsSent += bytes; | ||
67 | return m_currentBitsSent; | 81 | return m_currentBitsSent; |
68 | } | 82 | } |
69 | 83 | ||
@@ -83,17 +97,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
83 | get { return m_currentThrottle; } | 97 | get { return m_currentThrottle; } |
84 | set | 98 | set |
85 | { | 99 | { |
86 | if (value > m_maxAllowableThrottle) | 100 | int multipliedValue = (int)(value * m_throttleMultiplier); |
101 | |||
102 | if (multipliedValue > m_maxAllowableThrottle) | ||
87 | { | 103 | { |
88 | m_currentThrottle = m_maxAllowableThrottle; | 104 | m_currentThrottle = m_maxAllowableThrottle; |
89 | } | 105 | } |
90 | else if (value < m_minAllowableThrottle) | 106 | else if (multipliedValue < m_minAllowableThrottle) |
91 | { | 107 | { |
92 | m_currentThrottle = m_minAllowableThrottle; | 108 | m_currentThrottle = m_minAllowableThrottle; |
93 | } | 109 | } |
94 | else | 110 | else |
95 | { | 111 | { |
96 | m_currentThrottle = value; | 112 | m_currentThrottle = multipliedValue; |
97 | } | 113 | } |
98 | } | 114 | } |
99 | } | 115 | } |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 72072c2..1779d54 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | |||
@@ -155,7 +155,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
155 | 155 | ||
156 | if (config != null) | 156 | if (config != null) |
157 | { | 157 | { |
158 | userSettings.ClientThrottleMultipler = config.GetInt("client_throttle_multiplier"); | 158 | userSettings.ClientThrottleMultipler = config.GetFloat("client_throttle_multiplier"); |
159 | } | 159 | } |
160 | 160 | ||
161 | //m_log.DebugFormat("[CLIENT]: client_throttle_multiplier = {0}", userSettings.ClientThrottleMultipler); | 161 | //m_log.DebugFormat("[CLIENT]: client_throttle_multiplier = {0}", userSettings.ClientThrottleMultipler); |