Commit Graph

57 Commits

Author SHA1 Message Date
UbitUmarov
e096b49dd7 check if a packet can be sent imediatly without accounting it as sent on throttles when it is enqueued for later send. 2015-11-10 23:17:56 +00:00
UbitUmarov
778793d77f fix GetPacketsQueuedCount typos in last commit 2015-09-22 19:24:58 +01:00
UbitUmarov
ae70f61a64 let minimum wqburst be a bit larger than MTU 2015-09-22 18:56:03 +01:00
UbitUmarov
a8dc07ff5c removed a protocol breaking lludp debug option that no one should try, changed terrain send throotle to be by packets in queue, reduced odds of MTU violation on terrain send (still bad). Most UDP protocol implementations may not mind much, but our code still does 2015-09-22 18:39:59 +01:00
UbitUmarov
d9fafd9603 fix the missing initialization of the folish ProcessUnackedSends option 2015-09-06 17:12:31 +01:00
UbitUmarov
a11edceb00 seems to compile ( tests comented out) 2015-09-02 19:54:53 +01:00
UbitUmarov
371c9dd2af bad merge? 2015-09-01 14:54:35 +01:00
UbitUmarov
e3d82ad706 delay terrain sending if land queue is 2 busy 2015-08-22 04:08:30 +01:00
Justin Clark-Casey (justincc)
155da5aad2 Add debug ability to ignore reliably sent packets that are not acknowledged.
This is controlled via the console command "debug lludp client set process-unacked-sends true [<avatar-first-name> <avatar-last-name>]"
For debug purposes to see if this process for very bad connections is causing general outbound udp processing delays.
Relates to http://opensimulator.org/mantis/view.php?id=7393
2015-01-21 20:31:42 +00:00
Justin Clark-Casey (justincc)
8e1e8a0920 Make the performance controlling job processing threads introduced in conference code use a generic JobEngine class rather than 4 slightly different copy/pasted versions. 2015-01-12 20:56:37 +00:00
Mic Bowman
041a09ecb9 Enable runtime configuration of the minimum rate for adaptive
throttles. Setting adaptive_throttle_min_bps will change the
minimum rate that the adapative throttles will drop to in case
of network packet loss. The current rate default rate is 256kbps.
The viewer can throttle rates under that amount, but the dynamic
adaptation will not.
2014-12-29 18:46:33 -08:00
Justin Clark-Casey (justincc)
ec8d21c434 Label all threadpool calls being made in core OpenSimulator. This is to add problem diagnosis.
"show threadpool calls" now also returns named (labelled), anonymous (unlabelled) and total call stats.
2014-11-25 23:23:10 +00:00
Justin Clark-Casey (justincc)
5ab5d7fe47 Fix recent regression where adaptive throttles stopped adjusting.
Extends regression tests to test response of adaptive throttles to ack'ed and expired packets.
2014-11-25 23:22:20 +00:00
Justin Clark-Casey (justincc)
d33964222a Fix an issue where specifying both max client and server outgoing UDP throttles would cause client throttles to be lower than expected when total requests exceeded the scene limit.
This was because specifying a max client throttle would always request the max from the parent server throttle, no matter the actual total requests on the client throttle.
This would lead to a lower server multiplier than expected.
This change also adds a 'target' column to the "show throttles" output that shows the target rate (as set by client) if adaptive throttles is active.
This commit also re-adds the functionality lost in recent 5c1a1458 to set a max client throttle when adaptive is active.
This commit also adds TestClientThrottlePerClientAndRegionLimited and TestClientThrottleAdaptiveNoLimit regression tests
2014-11-25 23:21:38 +00:00
Justin Clark-Casey (justincc)
40314b56f2 Remove the unnecessary intermediate total token bucket.
This only had one child, which is the 'adaptive' token bucket.
So from testing and currently analysis, we can use that bucket directly which simplifies the code.
2014-11-25 23:21:37 +00:00
Justin Clark-Casey (justincc)
746defa094 Add basic regression test ThrottleTests.TestClientThrottleSetNoLimit 2014-11-25 23:18:40 +00:00
Justin Clark-Casey (justincc)
a142edec03 minor: add apparant total to logging when client sets throttles 2014-11-25 23:18:39 +00:00
Justin Clark-Casey (justincc)
c73e62ea3a minor: fix bug in throttle logging where arguments were mismatched 2014-11-25 23:18:39 +00:00
Justin Clark-Casey (justincc)
51eb8facd6 Add OutgoingPacketsQueuedCount clientstack stat.
This is the total of queued outgoing packets across all connections, as also seen in the "show queues" command.
Gives some early indication of whether the simulator can't send all outgoing packets fast enough.
Though then one would want to check that this isn't due to a few bad client connections.
2014-11-25 23:18:39 +00:00
UbitUmarov
caddabb5c4 scale ChildAgentThrottles with distance (internal to child server and not
root as was done before )
2014-11-06 22:25:16 +00:00
Justin Clark-Casey (justincc)
05508b5c56 Add "debug lludp throttle log <level> <avatar-first-name> <avatar-last-name>" to control extra throttle related debug logging. 2014-10-02 22:30:44 +01:00
Justin Clark-Casey (justincc)
d3578e2662 Add "debug lludp data out" console command for logging outgoing data just before it's put on the wire.
Unlike "debug lludp packet" which logs at the point where OpenSim first asks the clientstack to send a certain outgoing packet, this logs immediately before the actual send.
For low-level debugging purposes.
2014-09-24 23:44:55 +01:00
UbitUmarov
0514679b15 reduce MIN_CALLBACK_MS guard time. A value too high introduces a extra
throttle and makes more packets to be sent in bursts and not in steady
 state flow.
2014-09-02 18:51:49 +01:00
UbitUmarov
50433e089b *needs testing, not that good* change throttles math using floats and not
int64, etc. Limite brust bytes to the total rate client requested times a
look ahead estimation time, Avoid queues starvation with updates waiting...
2014-09-02 15:48:59 +01:00
UbitUmarov
7351d92a76 add method to get a category throttle rate 2014-08-29 16:19:30 +01:00
UbitUmarov
438798202f replace the tick() by a limit on the maximum number of tokens that can be
acumulated ( variable named BurtRate, not exactly a rate...)
2014-08-29 13:26:30 +01:00
UbitUmarov
986863a0cd try to reduce insane high data rate udp bursts. This needs testing on a
region with a lot of contents. Should not affect much average rates.
2014-08-28 22:26:03 +01:00
UbitUmarov
894b5c10c6 remove misplaced comment 2014-08-28 18:54:08 +01:00
UbitUmarov
9839904ebe try to make sense of throttle rate limits 2014-08-28 18:51:55 +01:00
UbitUmarov
5a2d4fd47f add some functions for estimation of number of bytes that can be send in a category in specified time 2014-08-28 16:49:32 +01:00
UbitUmarov
ade4bf69b1 if we send wearables with ThrottleOutPacketType.HighPriority, then we
should send other avatarinformation with same priority on same Task category ( plus cleanup )
2014-08-28 10:38:31 +01:00
UbitUmarov
1e888d61ca enqueue also if m_nextPackets[category] is not null. This is really the
top element of a category queue, equivalente to using a queue.peek() if
 avaiable
2014-08-27 01:33:09 +01:00
Justin Clark-Casey (justincc)
84cea46c10 Add experimental OutgoingQueueRefillEngine to handle queue refill processing on a controlled number of threads rather than the threadpool.
Disabled by default.  Currently can only be enabled with console "debug lludp oqre start" command, though this can be started and stopped whilst simulator is running.
When a connection requires packet queue refill processing (used to populate queues with entity updates, entity prop updates and image queue updates), this is done via Threadpool requests.
However, with a very high number of connections (e.g. 100 root + 300 child) a very large number of simultaneous requests may be causing performance issues.
This commit adds an experimental engine for processing these requests from a queue with a persistent thread instead.
Unlike inbound processing, there are no network requests in this processing that might hold the thread up for a long time.
Early implementation - currently only one thread which may (or may not) get overloaded with requests.  Added for testing purposes.
2014-08-19 00:17:12 +01:00
Justin Clark-Casey (justincc)
b375f86f11 Make LLUDPServer.Scene publicly gettable/privately settable instead of protected so that other logging code in the clientstack can record more useful information
Adds some commented out logging for use again in the future.
No functional change.
2014-08-19 00:17:12 +01:00
UbitUmarov
0ae8fed4c2 reduce ping cliping lower limit 2014-08-14 21:18:58 +01:00
UbitUmarov
8c657e4837 add a estimator of client ping time, and painfully make it visible in show
connections console command
2014-08-14 20:41:36 +01:00
Oren Hurvitz
af3498efdb In "show throttles", show the maximum drip rate. This shows whether a client is being throttled due to past poor performance. 2014-07-21 09:10:50 +01:00
Melanie
c6e9db5866 Merge branch 'master' into careminster
Conflicts:
	OpenSim/Framework/RegionSettings.cs
	OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
	OpenSim/Region/Framework/Interfaces/IInterregionComms.cs
	OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs
2014-01-28 21:02:20 +00:00
Mic Bowman
83626e60e6 Adds a configuration option to cannibalize bandwidth from the
udp texture throttle and move it to the task throttle. Since most
viewers are using http textures, the udp texture throttle is holding
onto bw that could be used for more responsive prims updates. See
the documentation for CannibalizeTextureRate in OpenSimDefaults.ini.
Option is disabled by default.
2014-01-20 18:59:43 -08:00
Melanie
e82d4154a2 Merge branch 'master' into careminster
Conflicts:
	OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
	OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
	OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
	OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
	OpenSim/Region/Framework/Scenes/ScenePresence.cs
	OpenSim/Region/Physics/Manager/PhysicsActor.cs
	OpenSim/Region/Physics/Manager/PhysicsScene.cs
2013-07-24 04:45:07 +01:00
Justin Clark-Casey (justincc)
63c42d6602 Do some simple queue empty checks in the main outgoing udp loop instead of always performing these on a separate fired thread.
This appears to improve cpu usage since launching a new thread is more expensive than performing a small amount of inline logic.
However, needs testing at scale.
2013-07-21 08:56:48 -07:00
Melanie
7830cc9954 Merge branch 'master' into careminster
Conflicts:
	OpenSim/Capabilities/Handlers/GetTexture/GetTextureHandler.cs
	OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
	OpenSim/Region/ClientStack/Linden/Caps/UploadBakedTextureModule.cs
	OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
	OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs
	OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs
	OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
	OpenSim/Region/Framework/Scenes/Scene.cs
	OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
	OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
	OpenSim/Region/Framework/Scenes/ScenePresence.cs
	OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs
	OpenSim/Server/Handlers/Simulation/AgentHandlers.cs
	OpenSim/Services/Connectors/Asset/AssetServicesConnector.cs
	OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
	OpenSim/Services/HypergridService/UserAgentService.cs
2013-07-18 10:08:10 +01:00
Diva Canto
1b265b213b Added show client-stats [first last] command to expose what viewers are requesting. 2013-07-10 16:09:45 -07:00
Melanie
582cb89beb Add a way to put things at the front of the queue for any throttle group.
Adds a DoubleLocklessQueue and uses it for the outgoing buckets. Added
a flag value to the Throttle Type (again) because although it's hacky, it's
the best of a bad bunch to get the message through the UDP stack to where it's
needed.
2013-01-16 19:29:27 +01:00
Melanie
5563a8916e Complete removal of the now unused state queue 2013-01-16 16:45:18 +00:00
Melanie
85aa1804df Complete removal of the now unused state queue 2013-01-16 17:06:25 +00:00
teravus
5e0294815f * Plumbing and basic setting of the GetMesh Cap Throttler.
* Last step is to flip the throttle distribution.
2012-11-17 03:47:09 -05:00
Melanie
6930d696e9 Merge branch 'master' into careminster
Conflicts:
	OpenSim/Region/CoreModules/Avatar/Attachments/Tests/AttachmentsModuleTests.cs
2012-07-25 18:19:12 +01:00
Justin Clark-Casey (justincc)
ef8570f789 Extend region console "show queues" command to show already collected time since last packeted received by the simulator from a viewer. 2012-07-24 23:39:31 +01:00
Melanie
b459239833 Recover from an internal mess-up in the outgoing packet queues by creating
a new queue object.
2011-12-08 01:08:40 +01:00