diff options
author | Justin Clark-Casey (justincc) | 2014-11-05 19:02:26 +0000 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2014-11-25 23:23:11 +0000 |
commit | d6c9705a3b9d4c9bbe0e23f6d8d3793c07bf53ea (patch) | |
tree | b2c2782d4825c5b407fef7e9d57d96d07852910a /OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs | |
parent | Add missing class from recent commit 69abade (diff) | |
download | opensim-SC-d6c9705a3b9d4c9bbe0e23f6d8d3793c07bf53ea.zip opensim-SC-d6c9705a3b9d4c9bbe0e23f6d8d3793c07bf53ea.tar.gz opensim-SC-d6c9705a3b9d4c9bbe0e23f6d8d3793c07bf53ea.tar.bz2 opensim-SC-d6c9705a3b9d4c9bbe0e23f6d8d3793c07bf53ea.tar.xz |
Add incoming packet async handling engine to queue some inbound udp async requests.
This is to reduce the potential for overload of the threadpool if there are many simultaneous requets in high concurrency situations.
Currently only applied to AvatarProperties and GenericMessage requests.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs index 61e1d6a..d8cf7a5 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs | |||
@@ -364,6 +364,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
364 | private IClientAPI m_currentIncomingClient; | 364 | private IClientAPI m_currentIncomingClient; |
365 | 365 | ||
366 | /// <summary> | 366 | /// <summary> |
367 | /// Queue some low priority but potentially high volume async requests so that they don't overwhelm available | ||
368 | /// threadpool threads. | ||
369 | /// </summary> | ||
370 | public IncomingPacketAsyncHandlingEngine IpahEngine { get; private set; } | ||
371 | |||
372 | /// <summary> | ||
367 | /// Experimental facility to run queue empty processing within a controlled number of threads rather than | 373 | /// Experimental facility to run queue empty processing within a controlled number of threads rather than |
368 | /// requiring massive numbers of short-lived threads from the threadpool when there are a high number of | 374 | /// requiring massive numbers of short-lived threads from the threadpool when there are a high number of |
369 | /// connections. | 375 | /// connections. |
@@ -454,6 +460,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
454 | if (usePools) | 460 | if (usePools) |
455 | EnablePools(); | 461 | EnablePools(); |
456 | 462 | ||
463 | IpahEngine = new IncomingPacketAsyncHandlingEngine(this); | ||
457 | OqrEngine = new OutgoingQueueRefillEngine(this); | 464 | OqrEngine = new OutgoingQueueRefillEngine(this); |
458 | } | 465 | } |
459 | 466 | ||
@@ -461,6 +468,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
461 | { | 468 | { |
462 | StartInbound(); | 469 | StartInbound(); |
463 | StartOutbound(); | 470 | StartOutbound(); |
471 | IpahEngine.Start(); | ||
464 | OqrEngine.Start(); | 472 | OqrEngine.Start(); |
465 | 473 | ||
466 | m_elapsedMSSinceLastStatReport = Environment.TickCount; | 474 | m_elapsedMSSinceLastStatReport = Environment.TickCount; |
@@ -506,6 +514,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
506 | m_log.Info("[LLUDPSERVER]: Shutting down the LLUDP server for " + Scene.Name); | 514 | m_log.Info("[LLUDPSERVER]: Shutting down the LLUDP server for " + Scene.Name); |
507 | base.StopOutbound(); | 515 | base.StopOutbound(); |
508 | base.StopInbound(); | 516 | base.StopInbound(); |
517 | IpahEngine.Stop(); | ||
509 | OqrEngine.Stop(); | 518 | OqrEngine.Stop(); |
510 | } | 519 | } |
511 | 520 | ||