aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/LindenUDP/LLImageManager.cs (follow)
Commit message (Collapse)AuthorAgeFilesLines
* * Change Util.FireAndForget to use ThreadPool.UnsafeQueueUserWorkItem(). ↵John Hurliman2009-10-191-2/+0
| | | | | | | | | | | | | | This avoids .NET remoting and a managed->unmanaged->managed jump. Overall, a night and day performance difference * Initialize the LLClientView prim full update queue to the number of prims in the scene for a big performance boost * Reordered some comparisons on hot code paths for a minor speed boost * Removed an unnecessary call to the expensive DateTime.Now function (if you *have* to get the current time as opposed to Environment.TickCount, always use DateTime.UtcNow) * Don't fire the queue empty callback for the Resend category * Run the outgoing packet handler thread loop for each client synchronously. It seems like more time was being spent doing the execution asynchronously, and it made deadlocks very difficult to track down * Rewrote some expensive math in LandObject.cs * Optimized EntityManager to only lock on operations that need locking, and use TryGetValue() where possible * Only update the attachment database when an object is attached or detached * Other small misc. performance improvements
* * Read scene_throttle_bps from the config file and use itJohn Hurliman2009-10-141-9/+2
| | | | * Minor formatting cleanup
* Merge branch 'htb-throttle' of ssh://opensimulator.org/var/git/opensim into ↵John Hurliman2009-10-141-0/+5
|\ | | | | | | htb-throttle
| * Merge branch 'master' into htb-throttleMelanie2009-10-141-0/+5
| |\
| | * * Fixes http://opensimulator.org/mantis/view.php?id=4225Diva Canto2009-10-121-0/+5
| | | | | | | | | | | | | | | * Fixes http://opensimulator.org/mantis/view.php?id=3959 * Allows for viewing inventory textures outside home grid
* | | * Minimized the number of times textures are pulled off the priority queueJohn Hurliman2009-10-141-23/+25
|/ / | | | | | | | | | | * OnQueueEmpty is still called async, but will not be called for a given category if the previous callback for that category is still running. This is the most balanced behavior I could find, and seems to work well * Added support for the old [ClientStack.LindenUDP] settings (including setting the receive buffer size) and added the new token bucket and global throttle settings * Added the AssetLoaderEnabled config variable to optionally disable loading assets from XML every startup. This gives a dramatic improvement in startup times for those who don't need the functionality every startup
* | * Copied LocklessQueue.cs into OpenSim.Framework and added the .Count ↵John Hurliman2009-10-131-5/+1
| | | | | | | | | | | | | | | | | | property and .Clear() method * Changed the way the QueueEmpty callback is fired. It will be fired asynchronously as soon as an empty queue is detected (this can happen immediately following a dequeue), and will not be fired again until at least one packet is dequeued from that queue. This will give callbacks advanced notice of an empty queue and prevent callbacks from stacking up while the queue is empty * Added LLUDPClient.IsConnected checks in several places to prevent unwanted network activity after a client disconnects * Prevent LLClientView.Close() from being called twice every disconnect * Removed the packet resend limit and improved the client timeout check
* | * Fixed a bug where clients were being added to ClientManager twiceJohn Hurliman2009-10-131-22/+22
|/ | | | | | * Changed the ClientManager interface to reduce potential errors with duplicate or mismatched keys * Added IClientAPI.RemoteEndPoint, which can (hopefully) eventually replace IClientAPI.CircuitCode * Changed the order of operations during client shutdown
* Merge branch 'master' of ssh://opensimulator.org/var/git/opensim into ↵John Hurliman2009-10-051-18/+24
|\ | | | | | | htb-throttle
| * Changed the lock object, to see if this helps at all. Also switched the ↵Diva Canto2009-10-051-11/+15
| | | | | | | | order of lock and try/catch in RemoveImageFromQueue.
| * Reduced locking.Diva Canto2009-10-041-8/+10
| |
* | Beginning work on the new LLUDP implementationJohn Hurliman2009-10-051-1/+1
|/
* * Removed code that is no longer used with Melanie's queue callback optimizationJohn Hurliman2009-10-021-126/+88
| | | | | * Moved all priority queue access to helper functions to improve reliability and readability * New version of CSJ2K.dll (from libomv source tree) that fixes a JPEG2000 comment decoding bug
* * Removed even more unnecessary state variables from J2KImageJohn Hurliman2009-10-021-23/+23
| | | | | * Fixed the incorrect "out of memory?" exception messages and replaced them with useful information * Cleaned up J2KImage and LLImageManager to conform to coding conventions
* Restore the missing image handling to the image manager. The missingMelanie2009-10-021-65/+79
| | | | image packet crashes Hippo without a message.
* Merge branch 'diva-textures-osgrid' into texturetestMelanie2009-10-021-7/+28
|\
| * Locking the priority queue to see if it gets pass that exception.Diva Canto2009-10-011-7/+28
| |
* | Change texture sending to be driven by the queue empty event from theMelanie2009-10-021-2/+7
|/ | | | packet queue, rather than a timer
* Removing console debug spewJohn Hurliman2009-10-011-7/+7
|
* * Rewrote LLImageManager to use a real priority queue and hold minimal stateJohn Hurliman2009-10-011-207/+117
| | | | | * Rewrote the logic in J2KImage.RunUpdate() * Added a default avatar texture (I made it myself)
* This releases the texture assets from LLImageManager cache, and re-requests ↵Diva Canto2009-09-301-1/+22
| | | | them later if the client asks for them again. Needs more testing in texture-rich sims.
* From: Alan Webb <alan_webb@us.ibm.com>Dr Scofield2009-06-251-44/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change moves texture send processing out of the main packet processing loop and moves it to a timer based processing cycle. Texture packets are sent to the client consistently over time. The timer is discontinued whenever there are no textures to transmit. The behavior of the texture sending mechanism is controlled by three variables in the LLCLient section of the config file: [1] TextureRequestRate (mS) determines how many times per second texture send processing will occur. The default is 100mS. [2] TextureSendLimit determines how many different textures will be considered on each cycle. Textures are selected by priority. The old mechanism specified a value of 10 for this parameter and this is the default [3] TextureDataLimit determines how many packets will be sent for each of the selected textures. The old mechanism specified a value of 5, so this is the default. So the net effect is that TextureSendLimit*TextureDataLimit packets will be sent every TextureRequestRate mS. Once we have gotten a reasonable feeling for how these parameters affect overall processing, it would be nice to autonmically manage these values using information about the current status of the region and network. Note that this also resolves the pathologcal problem that previously existed which was that a seated avatar generated very few in-bound packets (theoretically) and would therefore be the least able to retrieve the images being displayed by a projector script.
* Minor: Change OpenSim to OpenSimulator in older copyright headers and ↵Jeff Ames2009-06-011-1/+1
| | | | LICENSE.txt.
* Heart surgery on asset service code bits. Affects OpenSim.ini configuration ↵diva2009-05-151-3/+4
| | | | | | | | | | | | -- please see the example. Affects region servers only. This may break a lot of things, but it needs to go in. It was tested in standalone and the UCI grid, but it needs a lot more testing. Known problems: * HG asset transfers are borked for now * missing texture is missing * 3 unit tests commented out for now
* fixes exception thrown when client session is shutdown whileDr Scofield2009-04-291-0/+2
| | | | | packethandler still active
* It is possible that apacket is recieved before the clint stack is fully ready.Melanie Thielker2009-04-201-0/+2
| | | | | | This causes a nullref we need to catch here.
* Thank you kindly, RemedyTomm for a patch that:Charles Krinke2009-04-181-51/+102
| | | | | | | | | | | | Following feedback from 0003440, i've made some changes to the new texture pipeline to optimise performance. The changes are: - Fixed a math issue where a small percentage of images with a certain size (on the packet boundary) would not have their final data delivered. This issue has been present since pre- 0003440 - It was suggested that a discardlevel of -1 and a prioriy of 0 meant to abandon the transfer, this is incorrect and caused some textures to clog. - The texture throttle blocking queue is now only filled in relation to the actual throttle amount.. i.e, on a connection throttled to 300k, only twenty packets will be placed in the queue at a time, on a larger connection it will be much more. This is to balance responsiveness to requests and speed, and to minimise wasted packets. - The engine now keeps track of the number of pending textures, and the stack will not be walked if there's no textures pending, saving CPU. Textures are only considered "pending" when they've already been decoded. - As part of the above, some textures may receive twice as much data per cycle if the number of pending textures is below the cycle threshold, this should prevent loading from slowing down when there are fewer textures in the queue.
* * Commit a variety of fixes to bugs discovered while trying to fix the NaN ↵Teravus Ovares2009-04-141-0/+10
| | | | | | | | | singularity. * WebStatsModule doesn't crash on restart. GodsModule doesn't crash when there is no Dialog Module. LLUDPServer doesn't crash when the Operation was Aborted. * ODEPlugin does 'Almost NaN' sanity checks. * ODEPlugin sacrifices NaN avatars to the NaN black hole to appease it and keep it from sucking the rest of the world in.
* scream out a bit warning if we failed to set default imageSean Dague2009-04-131-0/+2
|
* put J2KImage into it's own file, please no doubling up on classes inSean Dague2009-04-131-316/+0
| | | | | files
* * Patch from RemedyTomm Mantis 3440Teravus Ovares2009-04-101-507/+410
| | | | | | | | * Revamps the server side texture pipeline * Textures should load faster, get clogged less, and be less blurry * Minor tweak to ensure the outgoing texture throttle stays private. * Fixes mantis 3440
* Mantis#3218. Thank you kindly, TLaukkan (Tommil) for a patch that:Charles Krinke2009-02-221-7/+11
| | | | | | | | | * Added log4net dependency to physxplugin in prebuild.xml. * Added missing m_log fields to classes. * Replaced Console.WriteLine with appropriate m_log.Xxxx * Tested that nant test target runs succesfully. * Tested that local opensim sandbox starts up without errors.
* - remove the Metadata property from AssetBase and return all previousMike Mazur2009-02-171-1/+1
| | | | | | | | | properties as before - prefix private variables with m_ in AssetBase.cs - related to Mantis #3122, as mentioned in https://lists.berlios.de/pipermail/opensim-dev/2009-February/005088.html - all services will likely need to be upgraded after this commit
* * Apply http://opensimulator.org/mantis/view.php?id=3149Justin Clarke Casey2009-02-131-14/+2
| | | | | | | * If the texture does not contain any discard levels the last image packet was not sent * Thanks Snowdrop
* * refactor: Move export map function to world map module from sceneJustin Clarke Casey2009-02-131-6/+0
|
* * optimized usings.lbsa712009-02-121-5/+3
|
* From Alan Webb <awebb@linux.vnet.ibm.com>Sean Dague2009-02-091-2/+2
| | | | | | | | | | | These changes replace all direct references to the AssetCache with IAssetCache. There is no change to functionality. Everything works as before. This is laying the groundwork for making it possible to register alternative asset caching mechanisms without disrupting other parts of OpenSim or their dependencies upon AssetCache functionality.
* This changeset is the step 1 of 2 in refactoringDr Scofield2009-02-061-1/+1
| | | | | | | | | | | | | | | | | | | | OpenSim.Region.Environment into a "framework" part and a modules only part. This first changeset refactors OpenSim.Region.Environment.Scenes, OpenSim.Region.Environment.Interfaces, and OpenSim.Region.Interfaces into OpenSim.Region.Framework.{Interfaces,Scenes} leaving only region modules in OpenSim.Region.Environment. The next step will be to move region modules up from OpenSim.Region.Environment.Modules to OpenSim.Region.CoreModules and then sort out which modules are really core modules and which should move out to forge. I've been very careful to NOT BREAK anything. i hope i've succeeded. as this is the work of a whole week i hope i managed to keep track with the applied patches of the last week --- could any of you that did check in stuff have a look at whether it survived? thx!
* - add OpenSim.Framework.AssetMetadata class. AssetBase is now composed of itMike Mazur2009-02-041-26/+26
| | | | | - trim trailing whitespace
* * Adds console command, 'predecode-j2k <number of threads>' to load all of ↵Teravus Ovares2009-01-251-1/+13
| | | | | | | the texture assets from the scene and decode the j2k layer data to cache. The work is split between the number of threads you specify. A good number of threads value is the number of cores on your machine minus 1. * Increases the number of ImageDataPackets we send per PriorityQueue pop and tweak it so that the number of packets is ( (2 * decode level) + 1 ) * 2, and (((2 * (5-decode level)) + 1) * 2). The first one sends more data for low quality textures, the second one sends more data for high quality textures.
* * Remove a few unnecessary locks to try and prevent lock contention in ↵Teravus Ovares2009-01-221-7/+7
| | | | LLImageManager
* * Another image packet edge case. Thanks nebadon for printing a log of itTeravus Ovares2009-01-191-1/+20
|
* * Set SVN PropertiesTeravus Ovares2009-01-191-664/+664
|
* * Progressive texture patch + PriorityQueue put into the LLClient namespace.Teravus Ovares2009-01-191-0/+664
* Updates LibOMV to r2362