flotsam: slower...

master
UbitUmarov 2020-07-28 21:01:45 +01:00
parent bd2476c61e
commit c575c211f9
2 changed files with 31 additions and 30 deletions

View File

@ -678,6 +678,13 @@ namespace OpenSim.Region.CoreModules.Asset
private void CleanupExpiredFiles(object source, ElapsedEventArgs e)
{
lock (timerLock)
{
if(!m_timerRunning || m_cleanupRunning)
return;
m_cleanupRunning = true;
}
long heap = 0;
//if (m_LogLevel >= 2)
{
@ -685,19 +692,12 @@ namespace OpenSim.Region.CoreModules.Asset
heap = GC.GetTotalMemory(false);
}
lock (timerLock)
{
if(!m_timerRunning || m_cleanupRunning)
return;
m_cleanupRunning = true;
}
// Purge all files last accessed prior to this point
DateTime purgeLine = DateTime.Now - m_FileExpiration;
// An asset cache may contain local non-temporary assets that are not in the asset service. Therefore,
// before cleaning up expired files we must scan the objects in the scene to make sure that we retain
// such local assets if they have not been recently accessed.
m_log.Info("[FLOTSAM ASSET CACHE] start touch files of assets in use");
TouchAllSceneAssets(false);
int cooldown = 0;
m_log.Info("[FLOTSAM ASSET CACHE] asset files expire");
@ -742,7 +742,7 @@ namespace OpenSim.Region.CoreModules.Asset
if (File.GetLastAccessTime(file) < purgeLine)
{
File.Delete(file);
cooldown += 5;
cooldown += 2;
string id = Path.GetFileName(file);
if(!String.IsNullOrEmpty(id))
{
@ -750,7 +750,7 @@ namespace OpenSim.Region.CoreModules.Asset
weakAssetReferences.Remove(id);
}
}
if(++cooldown >= 100)
if(++cooldown >= 30)
{
Thread.Sleep(50);
cooldown = 0;
@ -952,6 +952,8 @@ namespace OpenSim.Region.CoreModules.Asset
/// <returns>Number of distinct asset references found in the scene.</returns>
private int TouchAllSceneAssets(bool tryGetUncached)
{
m_log.Info("[FLOTSAM ASSET CACHE] start touch files of assets in use");
UuidGatherer gatherer = new UuidGatherer(m_AssetService);
int cooldown = 0;
@ -980,7 +982,7 @@ namespace OpenSim.Region.CoreModules.Asset
gatherer.AddForInspection(e);
while(gatherer.GatherNext())
{
if (++cooldown > 100)
if (++cooldown > 50)
{
Thread.Sleep(50);
cooldown = 0;
@ -996,16 +998,15 @@ namespace OpenSim.Region.CoreModules.Asset
gatherer.GatherAll();
cooldown = 0;
// windows does not update access time :(
foreach(UUID id in gatherer.GatheredUuids.Keys)
{
string idstr = id.ToString();
if(!UpdateFileLastAccessTime(GetFileName(idstr)) && tryGetUncached)
{
cooldown += 10;
cooldown += 5;
m_AssetService.Get(idstr);
}
if (++cooldown > 100)
if (++cooldown > 50)
{
Thread.Sleep(50);
cooldown = 0;

View File

@ -1802,7 +1802,7 @@
; AppDomainLoading = false
; Set this to true to load attachment scripts in separated domain, if AppDomainLoading is false
; same issues as AppDomainLoading, but my be usefull on regions with a lot of avatars traffic, if they carry scripts like AOs
; same issues as AppDomainLoading, but my be useful on regions with a lot of avatars traffic, if they carry scripts like AOs
; AttachmentsDomainLoading = false
; Controls whether previously compiled scripts DLLs are deleted on sim restart.
@ -2066,7 +2066,7 @@
;XmlRpcServiceWriteKey = 1234
; Disables HTTP Keep-Alive for XmlRpcGroupsServicesConnector HTTP Requests,
; only set to false it if you absolute sure regions and groups server support it.
; only set to false it if you absolute sure regions and groups server support it.
; XmlRpcDisableKeepAlive = true
; Minimum user level required to create groups
@ -2086,18 +2086,18 @@
; This section controls how state updates are prioritized for each client
; UpdatePrioritizationScheme valid values are BestAvatarResponsiveness and SimpleAngularDistance
; SimpleAngularDistance does use more cpu
; SimpleAngularDistance does use more cpu
UpdatePrioritizationScheme = BestAvatarResponsiveness
ReprioritizationEnabled = true
ReprioritizationInterval = 2000.0
RootReprioritizationDistance = 10.0
ChildReprioritizationDistance = 20.0
; ObjectsCullingByDistance, if true, don't send object updates if outside view range
; currently viewers are also told to delete objects that leave view range
; only avater position is considered, free camera may not see objects
; does increase cpu load
ObjectsCullingByDistance = false
; ObjectsCullingByDistance, if true, don't send object updates if outside view range
; currently viewers are also told to delete objects that leave view range
; only avater position is considered, free camera may not see objects
; does increase cpu load
ObjectsCullingByDistance = false
; If n > 1, only every n UDP terse updates will be sent to observers of an avatar that are in the same region
; Updates will always be sent to the avatar that the update addresses and if av velocity is effectively zero (to prevent drift due to missing updates).
@ -2134,9 +2134,9 @@
; enabled=false
[Statistics]
; NumberOfFrames is used in a moving average calculation, where NumberOfFrames is the number of frames
; to include in the averaging calculations
NumberOfFrames=10
; NumberOfFrames is used in a moving average calculation, where NumberOfFrames is the number of frames
; to include in the averaging calculations
NumberOfFrames=10
[MediaOnAPrim]
; Enable media on a prim facilities
@ -2146,18 +2146,18 @@
[NPC]
;; Enable Non Player Character (NPC) facilities
Enabled = false
;; several options to control NPCs creation
;; several options to control NPCs creation
;; allow NPCs to be created not Owned {true false} default: true
;; allow NPCs to be created not Owned {true false} default: true
; AllowNotOwned = true
;; allow NPCs to set to be sensed as Avatars {true false} default: true
;; allow NPCs to set to be sensed as Avatars {true false} default: true
; AllowSenseAsAvatar = true
;; allow NPCs to created cloning any avatar in region {true false} default: true
;; allow NPCs to created cloning any avatar in region {true false} default: true
; AllowCloneOtherAvatars = true
;; if true NPCs will have no group title, if false display "- NPC -" for easy identification {true false} default: true
;; if true NPCs will have no group title, if false display "- NPC -" for easy identification {true false} default: true
; NoNPCGroup = true
[Terrain]