| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
connection is not shared.
|
|
|
|
|
|
|
|
|
| |
this has not been necessary for some time as database connections are not shared.
However, many locks remain since they may effectively be providing transactionality in some operations (e.g. prim updates across multiple tables).
These are candidates for being replaced with proper database transactions, since this would not block unrelated operations (e.g. land save and object save)
or unrelated operations on the same tables (e.g. storage of one linkset whilst another is being removed).
In practice, any performance deg due to contention is probably rare and short lived as the major prim operations are performed in memory and only persisted some time afterwards.
|
|
|
|
| |
not shared.
|
|
|
|
|
|
| |
These locks are not necessary since the connection is taken from the underlying mysql pool and not shared.
Such locking is already not done by some other parts of OpenSim.Data.MySQL.
Pointed out by arribasim-dev
|
|
|
|
|
|
| |
inbound packets.
For test/debug purposes.
|
|
|
|
|
|
|
| |
debug/test purposes.
This drops all outbound packets that match a given packet name.
Can currently only be applied to all connections in a scene.
|
|
|
|
| |
Also only write console lines for actually connected bots.
|
|
|
|
| |
Only present if OQRE is enabled
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
If you want to stop existing behavious, add the None behaviour.
|
|
|
|
|
|
|
| |
previous behaviour active
Also closes behaviours on disconnect instead of interrupt, though this makes no practical difference.
If existing behaviour is None, other added behavious will not take affect until None is removed (as this is an infinite wait until interrupted).
|
|
|
|
| |
closed on teleport, don't unnecessarily resend all avatar and object data about that region.
|
|
|
|
|
|
| |
neighbour) don't resend all the initial avatar and object data again.
This is unnecessary since it has been received (and data continues to be received) in the existing child connection.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
[InterestManagement] in OpenSim.ini for experimental purposes.
If n > 1 for RootTerseUpdatePeriod only every n terse update is actually sent to observers on same region, unless velocity is effectively zero (to stop av drift).
If n > 1 for ChildTerseUpdatePeriod only every n terse update is sent to observers in other regions, unless velocity is effectively zero.
Defaults are same as before (all packets are sent).
Tradeoff is reduction of UDP traffic vs fidelity of observed av mvmt.
Increasing n > 1 leads to jerky observed mvmt immediateley for root, though not on child, where experimentally have gone to n = 4 before jerkiness is noticeable.
|
|
|
|
|
|
| |
test purposes, and use more consise property syntax.
No functional change.
|
|
|
|
| |
http://opensimulator.org/mantis/view.php?id=7301
|
|
|
|
|
|
|
| |
SP.WaitForUpdateAgent() with a triggered event instead.
Rapid polls are more expensive than triggered events (several polls vs one trigger) and may be problematic on heavily loaded simulators where many threads are vying for processor time.
A triggered event is also slightly quicker as there is no maximum 200ms wait between polls.
|
|
|
|
| |
This is already going to be correctly set by WaitForUpdateAgent() earlier on in that method, which is always called where a callback to the originating region is required.
|
|
|
|
| |
actually meant to get an ack (because it's reliable).
|
|
|
|
|
|
|
| |
an event rather than polling connection state every 100ms
This kind of polling is very expensive with many bots/polling threads and appears to be the primary cause of bot falloff from the client end at higher loads.
Where inbound packet threads can't run in time due to contention and simulator disconnect timeout occurs.
|
|
|
|
|
| |
This adds the "show stats", "stats record", etc. commands and information on available Threadpool threads, etc.
It also adds the Watchdog which logs warnings if time between executions is unexpectedly large.
|
|
|
|
|
|
| |
int.MaxValue
This is to avoid issues where many bots connect to a single end point with multiple regions, where each region requires a long-lived poll connection for each bot.
|
|
|
|
| |
This is to resolve some issues for pCampbot, chiefly with capability connection and inbound handling.
|
|
|
|
|
| |
It's WIP in that a dialog builder is on it's way. For now, the XML needs to
be handmade.
|
|
|
|
|
|
|
| |
HGInventoryBroker to preserve that behaviour there but allow 2 simultaneous inv requests (chiefly WebFetch) rather than 1
This lock serialized all requests and made the inventory throttling in WebFetch redundant.
By moving this lock, two simultaneous requests may now take place which may help with http://opensimulator.org/mantis/view.php?id=7054
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
cuts down UDP traffic without obvious adverse effects on observed avatar rotations.
Experimentally, on the Linden Lab grid the avatar can rotate slightly before triggering AvatarUpdates, whereas this is practically impossible in OpenSimulator.
These updates allow other avatars to see rotations, though sensitivity is low since other avatars can only be seen in one of 8 body rotations.
This commit changes sensitivity from 0.01 to 0.1, which better matches LL and reduces UDP traffic which has a beneficial impact on network and CPU load.
This has no impact on rotations in the simulator itself so simulation fidelity is the same as before.
To change this setting back for test/other purposes, edit RootRotationUpdateTolerance in the [InterestManagement] section of OpenSim.ini
|
|
|
|
|
|
|
|
|
| |
pool from 15 to 300
Running out of such threads under heavy load causes delayed packet processing which can lead to spurious UDP resends and knock on issues.
We already massively boost the min/max builtin pool worker and IOCP threads (which even with STP are still used for inbound network requests) without obvious adverse effects.
The threads are only instantiated if they are required.
This change does not affect other async_call_method options.
|
| |
|
|
|
|
| |
Move the experimental extra features functionality into the GridService. This sends default values for map, search and destination guide, plus ExportSupported control to the region on startup. Please watch http://opensimulator.org/wiki/SimulatorFeatures_Extras for changes and documentation.
|
|
|
|
|
|
| |
shorter than one of the test strings
This fixes http://opensimulator.org/mantis/view.php?id=7294
|
|
|
|
|
|
|
| |
RootVelocityUpdateTolerance parameters to [InterestManagement] in OpenSimDefaults.ini
These govern when AgentUpdates are sent to observers on position, rotation and velocity changes to an avatar (including the avatar themselves).
Higher values reduce AgentUpdate traffic but at a certain level will degrade smoothness of avatar and perceived avatar movement.
|
|
|
|
| |
for better accuracy and consistency with other similar parameters
|
| |
|
|
|
|
| |
However, disconnecting now halts any current connection, with the possible exception of the single currently connecting bot.
|
|
|
|
| |
we can continue to run status commands whilst bots are disconnecting.
|
|
|
|
| |
locking entire bot list for almost 100% of connection time.
|
|
|
|
|
|
|
|
|
| |
DebugLevel 1
This covers event queue setup messages and some outgoing messages (e.g. EnableSimulator)
In my experience these messages are only useful if you really know what they mean and you're looking for them
Otherwise, they're quite spammy.
Event queue DebugLevel 1 is enabled with the "debug eq 1" console command
|
| |
|
|
|
|
| |
from starting if no [SimulatorFeatures] section was present in config.
|
|
|
|
|
|
|
| |
not have sufficient permission, return null failure result rather than true.
On non-HG this is on the only recognized failure state so we can return more information in the error result.
On HG there are multiple failure states which would require more work to distinguish, so currently return the unsatisfying "Internal Error" like some other existing calls.
|
|
|
|
| |
REMOVEAGENTFROMGROUP call has failed because of missing parameters
|
| |
|
|
|
|
| |
Fix for 7284 which is an enumeration exception when starting up a region.
|
|
|
|
|
|
| |
a ServiceLocation would set the group name to an empty string.
This should set the ServiceLocation to an empty string instead.
|
| |
|