flotsam: slower...
parent
bd2476c61e
commit
c575c211f9
|
@ -678,6 +678,13 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||||
|
|
||||||
private void CleanupExpiredFiles(object source, ElapsedEventArgs e)
|
private void CleanupExpiredFiles(object source, ElapsedEventArgs e)
|
||||||
{
|
{
|
||||||
|
lock (timerLock)
|
||||||
|
{
|
||||||
|
if(!m_timerRunning || m_cleanupRunning)
|
||||||
|
return;
|
||||||
|
m_cleanupRunning = true;
|
||||||
|
}
|
||||||
|
|
||||||
long heap = 0;
|
long heap = 0;
|
||||||
//if (m_LogLevel >= 2)
|
//if (m_LogLevel >= 2)
|
||||||
{
|
{
|
||||||
|
@ -685,19 +692,12 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||||
heap = GC.GetTotalMemory(false);
|
heap = GC.GetTotalMemory(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
lock (timerLock)
|
|
||||||
{
|
|
||||||
if(!m_timerRunning || m_cleanupRunning)
|
|
||||||
return;
|
|
||||||
m_cleanupRunning = true;
|
|
||||||
}
|
|
||||||
// Purge all files last accessed prior to this point
|
// Purge all files last accessed prior to this point
|
||||||
DateTime purgeLine = DateTime.Now - m_FileExpiration;
|
DateTime purgeLine = DateTime.Now - m_FileExpiration;
|
||||||
|
|
||||||
// An asset cache may contain local non-temporary assets that are not in the asset service. Therefore,
|
// 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
|
// 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.
|
// 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);
|
TouchAllSceneAssets(false);
|
||||||
int cooldown = 0;
|
int cooldown = 0;
|
||||||
m_log.Info("[FLOTSAM ASSET CACHE] asset files expire");
|
m_log.Info("[FLOTSAM ASSET CACHE] asset files expire");
|
||||||
|
@ -742,7 +742,7 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||||
if (File.GetLastAccessTime(file) < purgeLine)
|
if (File.GetLastAccessTime(file) < purgeLine)
|
||||||
{
|
{
|
||||||
File.Delete(file);
|
File.Delete(file);
|
||||||
cooldown += 5;
|
cooldown += 2;
|
||||||
string id = Path.GetFileName(file);
|
string id = Path.GetFileName(file);
|
||||||
if(!String.IsNullOrEmpty(id))
|
if(!String.IsNullOrEmpty(id))
|
||||||
{
|
{
|
||||||
|
@ -750,7 +750,7 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||||
weakAssetReferences.Remove(id);
|
weakAssetReferences.Remove(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(++cooldown >= 100)
|
if(++cooldown >= 30)
|
||||||
{
|
{
|
||||||
Thread.Sleep(50);
|
Thread.Sleep(50);
|
||||||
cooldown = 0;
|
cooldown = 0;
|
||||||
|
@ -952,6 +952,8 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||||
/// <returns>Number of distinct asset references found in the scene.</returns>
|
/// <returns>Number of distinct asset references found in the scene.</returns>
|
||||||
private int TouchAllSceneAssets(bool tryGetUncached)
|
private int TouchAllSceneAssets(bool tryGetUncached)
|
||||||
{
|
{
|
||||||
|
m_log.Info("[FLOTSAM ASSET CACHE] start touch files of assets in use");
|
||||||
|
|
||||||
UuidGatherer gatherer = new UuidGatherer(m_AssetService);
|
UuidGatherer gatherer = new UuidGatherer(m_AssetService);
|
||||||
|
|
||||||
int cooldown = 0;
|
int cooldown = 0;
|
||||||
|
@ -980,7 +982,7 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||||
gatherer.AddForInspection(e);
|
gatherer.AddForInspection(e);
|
||||||
while(gatherer.GatherNext())
|
while(gatherer.GatherNext())
|
||||||
{
|
{
|
||||||
if (++cooldown > 100)
|
if (++cooldown > 50)
|
||||||
{
|
{
|
||||||
Thread.Sleep(50);
|
Thread.Sleep(50);
|
||||||
cooldown = 0;
|
cooldown = 0;
|
||||||
|
@ -996,16 +998,15 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||||
gatherer.GatherAll();
|
gatherer.GatherAll();
|
||||||
|
|
||||||
cooldown = 0;
|
cooldown = 0;
|
||||||
// windows does not update access time :(
|
|
||||||
foreach(UUID id in gatherer.GatheredUuids.Keys)
|
foreach(UUID id in gatherer.GatheredUuids.Keys)
|
||||||
{
|
{
|
||||||
string idstr = id.ToString();
|
string idstr = id.ToString();
|
||||||
if(!UpdateFileLastAccessTime(GetFileName(idstr)) && tryGetUncached)
|
if(!UpdateFileLastAccessTime(GetFileName(idstr)) && tryGetUncached)
|
||||||
{
|
{
|
||||||
cooldown += 10;
|
cooldown += 5;
|
||||||
m_AssetService.Get(idstr);
|
m_AssetService.Get(idstr);
|
||||||
}
|
}
|
||||||
if (++cooldown > 100)
|
if (++cooldown > 50)
|
||||||
{
|
{
|
||||||
Thread.Sleep(50);
|
Thread.Sleep(50);
|
||||||
cooldown = 0;
|
cooldown = 0;
|
||||||
|
|
|
@ -1802,7 +1802,7 @@
|
||||||
; AppDomainLoading = false
|
; AppDomainLoading = false
|
||||||
|
|
||||||
; Set this to true to load attachment scripts in separated domain, if AppDomainLoading is 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
|
; AttachmentsDomainLoading = false
|
||||||
|
|
||||||
; Controls whether previously compiled scripts DLLs are deleted on sim restart.
|
; Controls whether previously compiled scripts DLLs are deleted on sim restart.
|
||||||
|
@ -2066,7 +2066,7 @@
|
||||||
;XmlRpcServiceWriteKey = 1234
|
;XmlRpcServiceWriteKey = 1234
|
||||||
|
|
||||||
; Disables HTTP Keep-Alive for XmlRpcGroupsServicesConnector HTTP Requests,
|
; 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
|
; XmlRpcDisableKeepAlive = true
|
||||||
|
|
||||||
; Minimum user level required to create groups
|
; Minimum user level required to create groups
|
||||||
|
@ -2086,18 +2086,18 @@
|
||||||
; This section controls how state updates are prioritized for each client
|
; This section controls how state updates are prioritized for each client
|
||||||
|
|
||||||
; UpdatePrioritizationScheme valid values are BestAvatarResponsiveness and SimpleAngularDistance
|
; UpdatePrioritizationScheme valid values are BestAvatarResponsiveness and SimpleAngularDistance
|
||||||
; SimpleAngularDistance does use more cpu
|
; SimpleAngularDistance does use more cpu
|
||||||
UpdatePrioritizationScheme = BestAvatarResponsiveness
|
UpdatePrioritizationScheme = BestAvatarResponsiveness
|
||||||
ReprioritizationEnabled = true
|
ReprioritizationEnabled = true
|
||||||
ReprioritizationInterval = 2000.0
|
ReprioritizationInterval = 2000.0
|
||||||
RootReprioritizationDistance = 10.0
|
RootReprioritizationDistance = 10.0
|
||||||
ChildReprioritizationDistance = 20.0
|
ChildReprioritizationDistance = 20.0
|
||||||
|
|
||||||
; ObjectsCullingByDistance, if true, don't send object updates if outside view range
|
; ObjectsCullingByDistance, if true, don't send object updates if outside view range
|
||||||
; currently viewers are also told to delete objects that leave 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
|
; only avater position is considered, free camera may not see objects
|
||||||
; does increase cpu load
|
; does increase cpu load
|
||||||
ObjectsCullingByDistance = false
|
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
|
; 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).
|
; 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
|
; enabled=false
|
||||||
|
|
||||||
[Statistics]
|
[Statistics]
|
||||||
; NumberOfFrames is used in a moving average calculation, where NumberOfFrames is the number of frames
|
; NumberOfFrames is used in a moving average calculation, where NumberOfFrames is the number of frames
|
||||||
; to include in the averaging calculations
|
; to include in the averaging calculations
|
||||||
NumberOfFrames=10
|
NumberOfFrames=10
|
||||||
|
|
||||||
[MediaOnAPrim]
|
[MediaOnAPrim]
|
||||||
; Enable media on a prim facilities
|
; Enable media on a prim facilities
|
||||||
|
@ -2146,18 +2146,18 @@
|
||||||
[NPC]
|
[NPC]
|
||||||
;; Enable Non Player Character (NPC) facilities
|
;; Enable Non Player Character (NPC) facilities
|
||||||
Enabled = false
|
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
|
; 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
|
; 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
|
; 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
|
; NoNPCGroup = true
|
||||||
|
|
||||||
[Terrain]
|
[Terrain]
|
||||||
|
|
Loading…
Reference in New Issue