Commit Graph

1577 Commits

Author SHA1 Message Date
Diva Canto
aba9ffdbd0 Refactored the GetMesh module into a handler and a module, to be the same as GetTexture. 2011-05-02 11:56:40 -07:00
Diva Canto
10180760b7 Works! 2011-05-02 08:48:55 -07:00
Diva Canto
2d21052fa3 Start to drill down on GetTexture. Read the config and do different things. 2011-05-01 19:09:08 -07:00
Diva Canto
f79400e94c Broke down Caps.cs into a generic Caps object that simply registers/unregisters capabilities and a specific bunch of capability implementations in Linden space called BunchOfCaps.
Renamed a few methods that were misnomers.
Compiles but doesn't work.
2011-05-01 18:22:53 -07:00
Diva Canto
275046cf02 Change GetTextureModule.cs to conform to the new IRegion module interface. NOTHING OF THIS WORKS. Compiles. 2011-05-01 12:03:00 -07:00
Diva Canto
126d2adeba Move CapabilitiesModule back to CoreModules. This one belongs there. 2011-05-01 12:02:07 -07:00
Diva Canto
6b2b036387 Added OpenSim.Capabilities.Handlers. For the moment it has only the GetTexture handler. The region module in Linden space uses it. WARNING: nothing of this works yet, it just compiles. 2011-05-01 09:08:18 -07:00
Diva Canto
e3c27d8527 Nope, that didn't feel right. Moving all those modules to Linden space. 2011-04-30 13:24:25 -07:00
Diva Canto
d8ee0cbe1c First stab at cleaning up Caps. Compiles. Untested. 2011-04-30 09:24:15 -07:00
Diva Canto
549dc5aeb9 Eliminated sAgentCircuitData, a data structure that has been obsolete for quite some time. 2011-04-28 08:58:04 -07:00
Mic Bowman
36fef21e52 Merge branch 'master' into queuetest 2011-04-26 08:42:21 -07:00
dahlia
037373b825 recover from unhandled exception from bad rotation data while processing entity updates in LLClientView.cs 2011-04-25 17:11:54 -07:00
Mic Bowman
b9bca893ef Removed debug message in the token bucket code 2011-04-25 16:13:16 -07:00
Mic Bowman
13f141a4d5 Fix the totals shown by show throttle 2011-04-25 15:36:59 -07:00
Mic Bowman
77ab7ce084 Fixed the transmission of throttles from root agent to child
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-25 15:11:29 -07:00
Mic Bowman
024c12abc3 Cleaned up various configuration options. Removed the category throttle
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-25 10:44:41 -07:00
Mic Bowman
08e58e7ca6 Set the initial rate for the adaptive throttle to 160Kpbs
or about 15 packets per second.
2011-04-22 14:02:34 -07:00
Mic Bowman
3534f4492a Various clean ups. Removed some debugging code. Added a new "show pqueues"
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-22 14:01:12 -07:00
Mic Bowman
0897647709 Merge branch 'queuetest' of ssh://opensimulator.org/var/git/opensim into queuetest 2011-04-21 15:41:15 -07:00
Mic Bowman
c5159ad8d0 Add some locking on the child list for the token bucket
hiearchy. A few other cosmetic changes.
2011-04-21 15:40:38 -07:00
Dan Lake
7f28dd4b31 Refactor UnackedPacketCollection so ProcessQueues will handle Adds, Acks, and Removes in that order. 2011-04-21 15:40:32 -07:00
Dan Lake
3640d0204f Added ability to remove unacked packet from UnackedPacketCollection without an acknowledgement from the network. This prevents RTT and throttles from being updated as they would when an ACK is actually received. Also fixed stats logging for unacked bytes and resent packets in this case. 2011-04-21 01:51:08 -07:00
Dan Lake
b5ab33b5e1 bug fix. Now when an unacked update packet is handled through ResendPrimUpdates, it is removed from the UnackedPacketCollection. 2011-04-20 23:08:51 -07:00
Mic Bowman
7759bda833 Added an "immediate" queue to the priority queue. This is
per Melanie's very good suggestion. The immediate queue is
serviced completely before all others, making it a very good
place to put avatar updates & attachments.

Moved the priority queue out of the LLUDP directory and
into the framework. It is now a fairly general utility.
2011-04-20 21:58:49 -07:00
Mic Bowman
2b737c9cc2 Adds the first pass at an adaptive throttle to slow start new
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-20 16:23:33 -07:00
Mic Bowman
82de87ce99 Converted the property request queue to use the same retransmission
mechanism as the entity update queues.
2011-04-19 11:22:04 -07:00
Dan Lake
08d8a3e580 Requeue unacknowledged entity updates rather than resend then "as is".
Often, by the time the UDPServer realizes that an entity update packet
has not been acknowledged, there is a newer update for the same entity
already queued up or there is a higher priority update that should be
sent first. This patch eliminates 1:1 packet resends for unacked entity
update packets. Insteawd, unacked update packets are decomposed into the
original entity updates and those updates are placed back into the
priority queues based on their new priority but the original update
timestamp. This will generally place them at the head of the line to be
put back on the wire as a new outgoing packet but prevents the resend
queue from filling up with multiple stale updates for the same entity.
This new approach takes advantage of the UDP nature of the Linden protocol
in that the intent of a reliable update packet is that if it goes
unacknowledge, SOMETHING has to happen to get the update to the client.
We are simply making sure that we are resending current object state
rather than stale object state.

Additionally, this patch includes a generalized callback mechanism so
that any caller can specify their own method to call when a packet
expires without being acknowledged. We use this mechanism to requeue
update packets and otherwise use the UDPServer default method of just
putting expired packets in the resend queue.
2011-04-19 08:10:01 -07:00
Mic Bowman
3e0e1057ac Remove the call to remove tokens from the parent. Under heavy load
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-15 16:44:53 -07:00
Mic Bowman
590d20903c Merge branch 'testmerge' into queuetest
Conflicts:
	OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
2011-04-13 15:41:17 -07:00
Mic Bowman
bf91d1b077 remove packet monitoring debugging code 2011-04-13 15:37:25 -07:00
Mic Bowman
b33aac737a Fixed the update of items in the priority queue to enable both
types of property updates to be specified. Not sure if one form
of property update should supercede another. But for now the old
OpenSim behavior is preserved by sending both.
2011-04-13 15:37:25 -07:00
Mic Bowman
5e7aba4f88 fixed a couple bugs with the property queues 2011-04-13 15:37:25 -07:00
Mic Bowman
3fe22126ca First pass at moving object property requests into a queue similar
to the entity update queue. The number of property packets can
become significant when selecting/deselecting large numbers of
objects.

This is experimental code.
2011-04-13 15:37:25 -07:00
Mic Bowman
5b89c66c97 New tokenbucket algorithm. This one provides fair sharing of the queues
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-13 15:37:25 -07:00
Justin Clark-Casey (justincc)
6613daa82a Add a regression test for rezzing a single object into a scene from user inventory 2011-04-13 17:46:36 +01:00
Mic Bowman
b84ad81740 remove packet monitoring debugging code 2011-04-12 15:58:57 -07:00
Mic Bowman
78c04d61ca Fixed the update of items in the priority queue to enable both
types of property updates to be specified. Not sure if one form
of property update should supercede another. But for now the old
OpenSim behavior is preserved by sending both.
2011-04-12 15:58:57 -07:00
Mic Bowman
1a0f107012 fixed a couple bugs with the property queues 2011-04-12 15:58:57 -07:00
Mic Bowman
69d014e1dc First pass at moving object property requests into a queue similar
to the entity update queue. The number of property packets can
become significant when selecting/deselecting large numbers of
objects.

This is experimental code.
2011-04-12 15:58:57 -07:00
Mic Bowman
2f43687589 New tokenbucket algorithm. This one provides fair sharing of the queues
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-12 15:58:57 -07:00
Mic Bowman
72a24cf023 Merge branch 'queuetest' of ssh://opensimulator.org/var/git/opensim into queuetest
Conflicts:
	OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
	OpenSim/Region/Framework/Scenes/Prioritizer.cs
2011-04-11 08:41:36 -07:00
Mic Bowman
f778056c7a Removed some priority queue debugging code 2011-04-11 08:37:43 -07:00
Mic Bowman
19c6d1d569 Split the priority queue class into a seperate file. LLClientView
is big enough.
2011-04-10 16:57:02 -07:00
Mic Bowman
83dc2470f2 Fix a bug in the computation of the RTO. Basically... the RTO (the
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-10 16:57:02 -07:00
Mic Bowman
77cf9405de Implements adaptive queue management and fair queueing for
improved networking performance.

Reprioritization algorithms need to be ported still. One is
in place.
2011-04-10 16:57:02 -07:00
Justin Clark-Casey (justincc)
c1dec225ab Handle the client's parcel info requests asynchronously rather than synchronously.
Handling these synchronously kills the inbound packet loop if many requests are made for remote land and those requests are handled slowly or timeout (timeout is 10s)
This can happen if a user searches for "land for sale" and then clicks many of the parcels in the list (or just presses down arrow to move through every entry).
2011-04-05 17:47:11 +01:00
Justin Clark-Casey (justincc)
f58941e89f Make the "All Estates" option work from the client (this makes chosen changes to all the estates that the user owns).
This applies to adding/removing estate users, groups, managers and bans.
This is the application of the AllEstates_0.5.patch from http://opensimulator.org/mantis/view.php?id=5420
Thanks very much, Snoopy!
2011-04-05 01:30:13 +01:00
Mic Bowman
8b134f37f2 Fix a bug in the computation of the RTO. Basically... the RTO (the
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-04 14:18:26 -07:00
Mic Bowman
6885b7220c Implements adaptive queue management and fair queueing for
improved networking performance.

Reprioritization algorithms need to be ported still. One is
in place.
2011-04-04 11:41:07 -07:00
Justin Clark-Casey (justincc)
39c610c165 Log which address and port the UDP listener is configured for. This will match that given for InternalAddress in the config (e.g. 0.0.0.0)
Can't obtain actually bound address until the UDP socket is used for the first time.
2011-04-01 00:41:52 +01:00