aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs17
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs24
-rw-r--r--bin/OpenSim.ini.example62
3 files changed, 58 insertions, 45 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index e81ff4b..6f0b177 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -346,15 +346,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
346 protected int m_terrainCheckerCount; 346 protected int m_terrainCheckerCount;
347 protected uint m_agentFOVCounter; 347 protected uint m_agentFOVCounter;
348 348
349 // These numbers are guesses at a decent tradeoff between responsiveness
350 // of the interest list and throughput. Lower is more responsive, higher
351 // is better throughput
352 protected int m_primTerseUpdatesPerPacket = 25;
353 protected int m_primFullUpdatesPerPacket = 100;
354 protected int m_avatarTerseUpdatesPerPacket = 10;
355 /// <summary>Number of texture packets to put on the queue each time the
356 /// OnQueueEmpty event is triggered for the texture category</summary>
357 protected int m_textureSendLimit = 20;
358 protected IAssetService m_assetService; 349 protected IAssetService m_assetService;
359 private IHyperAssetService m_hyperAssets; 350 private IHyperAssetService m_hyperAssets;
360 351
@@ -3333,7 +3324,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3333 3324
3334 lock (m_avatarTerseUpdates.SyncRoot) 3325 lock (m_avatarTerseUpdates.SyncRoot)
3335 { 3326 {
3336 int count = Math.Min(m_avatarTerseUpdates.Count, m_avatarTerseUpdatesPerPacket); 3327 int count = Math.Min(m_avatarTerseUpdates.Count, m_udpServer.AvatarTerseUpdatesPerPacket);
3337 if (count == 0) 3328 if (count == 0)
3338 return; 3329 return;
3339 3330
@@ -3418,7 +3409,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3418 3409
3419 lock (m_primFullUpdates.SyncRoot) 3410 lock (m_primFullUpdates.SyncRoot)
3420 { 3411 {
3421 int count = Math.Min(m_primFullUpdates.Count, m_primFullUpdatesPerPacket); 3412 int count = Math.Min(m_primFullUpdates.Count, m_udpServer.PrimFullUpdatesPerPacket);
3422 if (count == 0) 3413 if (count == 0)
3423 return; 3414 return;
3424 3415
@@ -3462,7 +3453,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3462 3453
3463 lock (m_primTerseUpdates.SyncRoot) 3454 lock (m_primTerseUpdates.SyncRoot)
3464 { 3455 {
3465 int count = Math.Min(m_primTerseUpdates.Count, m_primTerseUpdatesPerPacket); 3456 int count = Math.Min(m_primTerseUpdates.Count, m_udpServer.PrimTerseUpdatesPerPacket);
3466 if (count == 0) 3457 if (count == 0)
3467 return; 3458 return;
3468 3459
@@ -3585,7 +3576,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3585 void ProcessTextureRequests() 3576 void ProcessTextureRequests()
3586 { 3577 {
3587 if (m_imageManager != null) 3578 if (m_imageManager != null)
3588 m_imageManager.ProcessImageQueue(m_textureSendLimit); 3579 m_imageManager.ProcessImageQueue(m_udpServer.TextureSendLimit);
3589 } 3580 }
3590 3581
3591 public void SendAssetUploadCompleteMessage(sbyte AssetType, bool Success, UUID AssetFullID) 3582 public void SendAssetUploadCompleteMessage(sbyte AssetType, bool Success, UUID AssetFullID)
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
index e9faf2e..232c9c9 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
@@ -98,6 +98,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP
98 98
99 /// <summary>The measured resolution of Environment.TickCount</summary> 99 /// <summary>The measured resolution of Environment.TickCount</summary>
100 public readonly float TickCountResolution; 100 public readonly float TickCountResolution;
101 /// <summary>Number of terse prim updates to put on the queue each time the
102 /// OnQueueEmpty event is triggered for updates</summary>
103 public readonly int PrimTerseUpdatesPerPacket;
104 /// <summary>Number of terse avatar updates to put on the queue each time the
105 /// OnQueueEmpty event is triggered for updates</summary>
106 public readonly int AvatarTerseUpdatesPerPacket;
107 /// <summary>Number of full prim updates to put on the queue each time the
108 /// OnQueueEmpty event is triggered for updates</summary>
109 public readonly int PrimFullUpdatesPerPacket;
110 /// <summary>Number of texture packets to put on the queue each time the
111 /// OnQueueEmpty event is triggered for textures</summary>
112 public readonly int TextureSendLimit;
101 113
102 /// <summary>Handlers for incoming packets</summary> 114 /// <summary>Handlers for incoming packets</summary>
103 //PacketEventDictionary packetEvents = new PacketEventDictionary(); 115 //PacketEventDictionary packetEvents = new PacketEventDictionary();
@@ -172,6 +184,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP
172 m_asyncPacketHandling = config.GetBoolean("async_packet_handling", false); 184 m_asyncPacketHandling = config.GetBoolean("async_packet_handling", false);
173 m_recvBufferSize = config.GetInt("client_socket_rcvbuf_size", 0); 185 m_recvBufferSize = config.GetInt("client_socket_rcvbuf_size", 0);
174 sceneThrottleBps = config.GetInt("scene_throttle_max_bps", 0); 186 sceneThrottleBps = config.GetInt("scene_throttle_max_bps", 0);
187
188 PrimTerseUpdatesPerPacket = config.GetInt("PrimTerseUpdatesPerPacket", 25);
189 AvatarTerseUpdatesPerPacket = config.GetInt("AvatarTerseUpdatesPerPacket", 10);
190 PrimFullUpdatesPerPacket = config.GetInt("PrimFullUpdatesPerPacket", 100);
191 TextureSendLimit = config.GetInt("TextureSendLimit", 20);
192 }
193 else
194 {
195 PrimTerseUpdatesPerPacket = 25;
196 AvatarTerseUpdatesPerPacket = 10;
197 PrimFullUpdatesPerPacket = 100;
198 TextureSendLimit = 20;
175 } 199 }
176 200
177 m_throttle = new TokenBucket(null, sceneThrottleBps, sceneThrottleBps); 201 m_throttle = new TokenBucket(null, sceneThrottleBps, sceneThrottleBps);
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example
index 3dc746e..f426556 100644
--- a/bin/OpenSim.ini.example
+++ b/bin/OpenSim.ini.example
@@ -355,8 +355,9 @@
355 ; already separated from packet handling with a queue, so this will only 355 ; already separated from packet handling with a queue, so this will only
356 ; affect whether networking internals such as packet decoding and 356 ; affect whether networking internals such as packet decoding and
357 ; acknowledgement accounting are done synchronously or asynchronously 357 ; acknowledgement accounting are done synchronously or asynchronously
358 async_packet_handling = false 358 ;
359 359 ;async_packet_handling = false
360
360 ; The client socket receive buffer size determines how many 361 ; The client socket receive buffer size determines how many
361 ; incoming requests we can process; the default on .NET is 8192 362 ; incoming requests we can process; the default on .NET is 8192
362 ; which is about 2 4k-sized UDP datagrams. On mono this is 363 ; which is about 2 4k-sized UDP datagrams. On mono this is
@@ -371,22 +372,26 @@
371 ; by the system's settings for the maximum client receive buffer 372 ; by the system's settings for the maximum client receive buffer
372 ; size (on linux systems you can set that with "sysctl -w 373 ; size (on linux systems you can set that with "sysctl -w
373 ; net.core.rmem_max=X") 374 ; net.core.rmem_max=X")
375 ;
374 ;client_socket_rcvbuf_size = 8388608 376 ;client_socket_rcvbuf_size = 8388608
375 377
376 ; Maximum outbound bytes per second for a single scene. This can be used to 378 ; Maximum outbound bytes per second for a single scene. This can be used to
377 ; throttle total outbound UDP traffic for a simulator. The default value is 379 ; throttle total outbound UDP traffic for a simulator. The default value is
378 ; 0, meaning no throttling at the scene level. The example given here is 380 ; 0, meaning no throttling at the scene level. The example given here is
379 ; 20 megabits 381 ; 20 megabits
382 ;
380 ;scene_throttle_max_bps = 2621440 383 ;scene_throttle_max_bps = 2621440
381 384
382 ; Maximum bits per second to send to any single client. This will override 385 ; Maximum bits per second to send to any single client. This will override
383 ; the user's viewer preference settings. The default value is 0, meaning no 386 ; the user's viewer preference settings. The default value is 0, meaning no
384 ; aggregate throttling on clients (only per-category throttling). The 387 ; aggregate throttling on clients (only per-category throttling). The
385 ; example given here is 1.5 megabits 388 ; example given here is 1.5 megabits
389 ;
386 ;client_throttle_max_bps = 196608 390 ;client_throttle_max_bps = 196608
387 391
388 ; Per-client bytes per second rates for the various throttle categories. 392 ; Per-client bytes per second rates for the various throttle categories.
389 ; These are default values that will be overriden by clients 393 ; These are default values that will be overriden by clients
394 ;
390 ;resend_default = 12500 395 ;resend_default = 12500
391 ;land_default = 500 396 ;land_default = 500
392 ;wind_default = 500 397 ;wind_default = 500
@@ -399,6 +404,7 @@
399 ; Per-client maximum burst rates in bytes per second for the various 404 ; Per-client maximum burst rates in bytes per second for the various
400 ; throttle categories. These are default values that will be overriden by 405 ; throttle categories. These are default values that will be overriden by
401 ; clients 406 ; clients
407 ;
402 ;resend_limit = 18750 408 ;resend_limit = 18750
403 ;land_limit = 29750 409 ;land_limit = 29750
404 ;wind_limit = 18750 410 ;wind_limit = 18750
@@ -407,6 +413,28 @@
407 ;texture_limit = 55750 413 ;texture_limit = 55750
408 ;asset_limit = 27500 414 ;asset_limit = 27500
409 ;state_limit = 37000 415 ;state_limit = 37000
416
417 ; Configures how ObjectUpdates are aggregated. These numbers
418 ; do not literally mean how many updates will be put in each
419 ; packet that goes over the wire, as packets are
420 ; automatically split on a 1400 byte boundary. These control
421 ; the balance between responsiveness of interest list updates
422 ; and total throughput. Higher numbers will ensure more full-
423 ; sized packets and faster sending of data, but more delay in
424 ; updating interest lists
425 ;
426 ;PrimTerseUpdatesPerPacket = 25
427 ;AvatarTerseUpdatesPerPacket = 10
428 ;PrimFullUpdatesPerPacket = 100
429
430 ; TextureSendLimit determines how many packets will be put on
431 ; the outgoing queue each cycle. Like the settings above, this
432 ; is a balance between responsiveness to priority updates and
433 ; total throughput. Higher numbers will give a better
434 ; throughput at the cost of reduced responsiveness to client
435 ; priority changes or transfer aborts
436 ;
437 ;TextureSendLimit = 20
410 438
411[Chat] 439[Chat]
412 ; Controls whether the chat module is enabled. Default is true. 440 ; Controls whether the chat module is enabled. Default is true.
@@ -1365,36 +1393,6 @@
1365 ;RecycleDataBlocks = true; 1393 ;RecycleDataBlocks = true;
1366 1394
1367 1395
1368[LLClient]
1369 ; Resend packets markes as reliable until they are received
1370 ;
1371 ;ReliableIsImportant = false
1372
1373 ; Maximum number of times to resend packets marked reliable
1374 ;
1375 ;MaxReliableResends = 3
1376
1377 ; Configures how ObjectUpdates are compressed.
1378 ;
1379 ;TerseUpdatesPerPacket=10
1380 ;FullUpdatesPerPacket=14
1381 ;TerseUpdateRate=10
1382 ;FullUpdateRate=14
1383
1384 ;PacketMTU = 1400
1385
1386 ; TextureSendLimit determines how many different textures
1387 ; will be considered on each cycle. Textures are selected
1388 ; by priority. The old mechanism specified a value of 10 for
1389 ; this parameter.
1390 ;
1391 ;TextureSendLimit = 10
1392
1393 ; TextureDataLimit determines how many packets will be sent for
1394 ; each of the selected textures. Default is 5.
1395 ;
1396 ;TextureDataLimit = 5
1397
1398[InterestManagement] 1396[InterestManagement]
1399 ; This section controls how state updates are prioritized for each client 1397 ; This section controls how state updates are prioritized for each client
1400 ; Valid values are Time, Distance, SimpleAngularDistance, and FrontBack 1398 ; Valid values are Time, Distance, SimpleAngularDistance, and FrontBack