aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs (unfollow)
Commit message (Collapse)AuthorFilesLines
2019-05-19Dump OpenSim 0.9.0.1 into it's own branch.onefang1-156/+232
2016-11-03Initial update to OpenSim 0.8.2.1 source code.David Walter Seikel1-54/+189
2012-07-24Extend region console "show queues" command to show already collected time ↵Justin Clark-Casey (justincc)1-1/+2
since last packeted received by the simulator from a viewer.
2011-10-12minor: insert some commented out log lines which are a blunt but useful ↵Justin Clark-Casey (justincc)1-2/+3
instrument to see packet expiry and received acks
2011-10-12Improve some method doc for LLUDPClient, LLUDPServer and UnackedPacketCollectionJustin Clark-Casey (justincc)1-7/+15
2011-04-30First stab at cleaning up Caps. Compiles. Untested.Diva Canto1-0/+0
2011-04-25Fix the totals shown by show throttleMic Bowman1-1/+1
2011-04-25Fixed the transmission of throttles from root agent to childMic Bowman1-15/+25
agents. Child throttles are based on the number of child agents known to the root and at least 1/4 of the throttle given to the root.
2011-04-25Cleaned up various configuration options. Removed the category throttleMic Bowman1-7/+6
limits because the only ones used now are the defaults (which are overwritten by the client throttles anyway). Updated the default rates to correspond to about 350kbps. Also added a configuration to disable adaptive throttle. The default is the previous behavior (no adaptation).
2011-04-22Various clean ups. Removed some debugging code. Added a new "show pqueues"Mic Bowman1-23/+1
command to look at the entity update priority queue. Added a "name" parameter to show queues, show pqueues and show throttles to look at data for a specific user.
2011-04-20Adds the first pass at an adaptive throttle to slow start newMic Bowman1-2/+7
clients. If the sent packets are ack'ed successfully the throttle will open quickly up to the maximum specified by the client and/or the sims client throttle. This still needs a lot of adjustment to get the rates correct.
2011-04-15Remove the call to remove tokens from the parent. Under heavy loadMic Bowman1-0/+10
this appears to cause problems with the system timer resolution. This caused a problem with tokens going into the root throttle as bursts leading to some starvation. Also changed EnqueueOutgoing to always queue a packet if there are already packets in the queue. Ensures consistent ordering of packet sends.
2011-04-13New tokenbucket algorithm. This one provides fair sharing of the queuesMic Bowman1-38/+58
when client and simulator throttles are set. This algorithm also uses pre-defined burst rate of 150% of the sustained rate for each of the throttles. Removed the "state" queue. The state queue is not a Linden queue and appeared to be used just to get kill packets sent.
2011-04-12New tokenbucket algorithm. This one provides fair sharing of the queuesMic Bowman1-38/+58
when client and simulator throttles are set. This algorithm also uses pre-defined burst rate of 150% of the sustained rate for each of the throttles. Removed the "state" queue. The state queue is not a Linden queue and appeared to be used just to get kill packets sent.
2011-04-11New tokenbucket algorithm. This one provides fair sharing of the queuesMic Bowman1-38/+58
when client and simulator throttles are set. This algorithm also uses pre-defined burst rate of 150% of the sustained rate for each of the throttles. Removed the "state" queue. The state queue is not a Linden queue and appeared to be used just to get kill packets sent.
2011-04-10Fix a bug in the computation of the RTO. Basically... the RTO (theMic Bowman1-2/+2
time to wait to retransmit packets) always maxed out (no retransmissions for 24 or 48 seconds. Note that this is going to cause faster (and more) retransmissions. Fix for dynamic throttling needs to go with this.
2011-04-04Fix a bug in the computation of the RTO. Basically... the RTO (theMic Bowman1-2/+2
time to wait to retransmit packets) always maxed out (no retransmissions for 24 or 48 seconds. Note that this is going to cause faster (and more) retransmissions. Fix for dynamic throttling needs to go with this.
2011-02-09Revert "Brute-force debug -- mantis #5365"Diva Canto1-15/+3
This reverts commit 585473aade100c3ffeef27e0c8e6b6c8c09d0109.
2011-02-09Revert "Don't build strings unless we're in emergency debugging."Diva Canto1-8/+8
This reverts commit ba202ea9b08b1205de343c65fd209b6cca4cb6bc.
2011-02-08Don't build strings unless we're in emergency debugging.Diva Canto1-8/+8
2011-02-08Brute-force debug -- mantis #5365Diva Canto1-3/+15
2011-02-02Record number of resent packets in LindenUDP stack and display in stats reportJustin Clark-Casey (justincc)1-2/+5
2011-02-02Stop double counting dequeued packets for packets sent numberJustin Clark-Casey (justincc)1-4/+5
This is already being incremented in LLUDPServer.SendPacketFinal for every packet
2011-01-19Correct "show queues" to show queued packet numbers for each client instead ↵Justin Clark-Casey (justincc)1-9/+9
of bytes. Byte amounts aren't actually available - this was a misunderstanding of TokenBucket.Content. But raw packet numbers are.
2010-12-02Stop LLUDPServer sending updates after object deletes by always queueing deletesJustin Clark-Casey (justincc)1-3/+4
If an LL 1.23.5 client (and possibly earlier and later) receives an object update after a kill object packet, it leaves the deleted prim in the scene until client relog This is possible in LLUDPServer if an object update packet is queued but a kill packet sent immediately. Beyond invasive tracking of kill sending, most expedient solution is to always queue kills, so that they always arrive after updates. In tests, this doesn't appear to affect performance. There is probably still an issue present where an update packet might not be acked and then resent after the kill packet.
2010-12-02minor: add some method docJustin Clark-Casey (justincc)1-0/+8
2010-11-17add "Unacked bytes" column to "show queues"Justin Clark-Casey (justincc)1-1/+2
This should show the number of bytes sent to the client that it has not yet acknowledged.
2010-11-17Fix "show queues" console commandJustin Clark-Casey (justincc)1-3/+19
For each agent, this command shows how many packets have been sent/received and how many bytes remain in each of the send queues (resend, land, texture, etc.) Sometimes useful for diagnostics
2010-09-17Send KillPackets on the Task queue rather than the State queueJustin Clark-Casey (justincc)1-1/+7
Object updates are sent on the task queue. It's possible for an object update to be placed on the client queue before a kill packet comes along. The kill packet would then be placed on the state queue and possibly get sent before the update If the update gets sent afterwards then client get undeletable no owner objects until relog Placing the kills in the task queue should mean that they are received after updates. The kill record prevents subsequent updates getting on the queue Comments state that updates are sent via the state queue but this isn't true. If this was the case this problem might not exist.
2010-03-05* Cache packed throttle data to avoid repeated allocations in ↵John Hurliman1-11/+24
CheckForSignificantMovement() * Removed a lock on "return m_neighbours.Count" in GetInaccurateNeighborCount(). Dictionary<>.Count by itself does not benefit from locking
2009-12-01* Fix Inconsistent line ending style in LLUDPClientTeravus Ovares (Dan Olivares)1-2/+2
2009-11-29* Patch from Misterblue to fix Environment.TickCount for statistics ↵Teravus Ovares (Dan Olivares)1-1/+4
purposes. Resolves the wrap-around of the 32 bit uint. * Teravus moved the Environment methods to the Util class
2009-10-30Make the default and max RTO configurable int he linden client stackMelanie1-4/+12
2009-10-30* Moving parcel media and avatar update packets from the unthrottled ↵John Hurliman1-3/+0
category to task * Fixing a bug where the max burst rate for the state category was being set as unlimited, causing connections to child agents to saturate bandwidth * Upped the example default drip rates to 1000 bytes/sec, the minimum granularity for the token buckets
2009-10-27* Converts ClientManager.ForEach() (and as a result, Scene.ForEachClient()) ↵John Hurliman1-1/+1
to use a non-blocking parallel method when operating in async mode * Minor code readability cleanup
2009-10-26Removed an unnecessary lock in LLUDPClient.UpdateRTO() and ↵John Hurliman1-30/+21
LLUDPClient.BackoffRTO()
2009-10-25Changing Scene.ForEachClient to use the synchronous for loop instead of ↵John Hurliman1-14/+40
Parallel. This is quite possibly the source of some deadlocking, and at the very least the synchronous version gives better stack traces * Lock the LLUDPClient RTO math * Add a helper function for backing off the RTO, and follow the optional advice in RFC 2988 to clear existing SRTT and RTTVAR values during a backoff * Removing the unused PrimitiveBaseShape.SculptImage parameter * Improved performance of SceneObjectPart instantiation * ZeroMesher now drops SculptData bytes like Meshmerizer, to allow the texture data to be GCed * Improved typecasting speed in MySQLLegacyRegionData.BuildShape() * Improved the instantiation of PrimitiveBaseShape
2009-10-23* Changed the max RTO value to 60 seconds to comply with RFC 2988John Hurliman1-1/+1
* Implemented section 5.5, exponential backoff of the RTO after a resend
2009-10-23Commented out noisy debugging about resent packets (normal) and agents ↵John Hurliman1-2/+2
setting throttles (normal)
2009-10-21* Change the OnQueueEmpty signature to send the flags of the queues that are ↵John Hurliman1-33/+77
empty instead of firing once per empty queue * Change the OnQueueEmpty firing to use a minimum time until next fire instead of a sleep * Set OutgoingPacket.TickCount = 0 earlier to avoid extra resends when things are running slowly (inside a profiler, for example)
2009-10-21* Clarified what FireQueueEmpty is doing with a MIN_CALLBACK_MS constant and ↵John Hurliman1-4/+7
upped it to 30ms * Removed the unused PacketSent() function * Switched UnackedPacketCollection from a SortedDictionary to a Dictionary now that the sorting is no longer needed. Big performance improvement for ResendUnacked()
2009-10-21* FireQueueEmpty now checks if a measurable amount of time has passed, and ↵John Hurliman1-2/+6
if not it sleeps for a small amount of time. This throttles OnQueueEmpty calls where there is no callback or the callback is doing very little work * Changed HandleQueueEmpty()'s Monitor.TryEnter() calls to locks. We want to take our time in this function and do all the work necessary, since returning too fast will induce a sleep anyways
2009-10-21* Changed the timing calculations for sending resends/acks/pings from ↵John Hurliman1-12/+1
per-client back to per-scene * Testing a fix from Jim to make the cpu usage fix cleaner
2009-10-21Testing out a hack to identify the source of the high cpu usageJohn Hurliman1-0/+3
2009-10-21* Handle UseCircuitCode packets asynchronously. Adding an agent to a scene ↵John Hurliman1-2/+5
can take several seconds, and was blocking up packet handling in the meantime * Clamp retransmission timeout values between three and 10 seconds * Log outgoing time for a packet right after it is sent instead of well before * Loop through the entire UnackedPacketCollection when looking for expired packets
2009-10-21* Replaced the UnackedPacketCollection with a lockless implementation. The ↵John Hurliman1-25/+8
tiny amount of time spent in the locks turned into a lot of time when the rest of the LLUDP implementation went lockless * Changed the timer tracking numbers for each client to not have "memory". It will no longer queue up calls to functions like ResendUnacked * Reverted Jim's WaitHandle code. Although it was technically more correct, it exhibited the exact same behavior as the old code but spent more cycles. The 20ms has been replaced with the minimum amount of time before a token bucket could receive a drip, and an else { sleep(0); } was added to make sure the outgoing packet handler always yields at least a minimum amount
2009-10-21Fixed the way OnQueueEmpty is called to prevent simultaneous calls for the ↵John Hurliman1-7/+7
same category
2009-10-21Committing Jim's optimization to replace the 20ms sleep in outgoing packet ↵John Hurliman1-16/+35
handling with an interruptible wait handle
2009-10-20* Added a sanity check to GetScriptAssemblies() and GetScriptStates() for ↵John Hurliman1-0/+2
the case where no scripting engine is enabled * Added TokenBucket.cs to OpenSim, with some fixes for setting a more accurate MaxBurst value and getting a more accurate Content value (by Drip()ing each get)
2009-10-20* Removed the unused m_agentUpdates collection and some extra work that was ↵John Hurliman1-1/+1
being done for AgentUpdate packets * Start LLUDPClients unpaused (this variable is not being used yet)