YEngine, change default number of exec threads to 2 of priority Normal. Let the threads priority a option on ini files
parent
d5f918f945
commit
943d0935a6
|
@ -207,8 +207,8 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
if(!m_Enabled)
|
||||
return;
|
||||
|
||||
numThreadScriptWorkers = m_Config.GetInt("NumThreadScriptWorkers", 1);
|
||||
|
||||
numThreadScriptWorkers = m_Config.GetInt("NumThreadScriptWorkers", 2);
|
||||
string priority = m_Config.GetString("Priority", "Normal");
|
||||
m_TraceCalls = m_Config.GetBoolean("TraceCalls", false);
|
||||
m_Verbose = m_Config.GetBoolean("Verbose", false);
|
||||
m_ScriptDebug = m_Config.GetBoolean("ScriptDebug", false);
|
||||
|
@ -250,9 +250,31 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
return;
|
||||
}
|
||||
|
||||
ThreadPriority workersPrio = ThreadPriority.Normal;
|
||||
switch (priority)
|
||||
{
|
||||
case "Lowest":
|
||||
workersPrio = ThreadPriority.Lowest;
|
||||
break;
|
||||
case "BelowNormal":
|
||||
workersPrio = ThreadPriority.BelowNormal;
|
||||
break;
|
||||
case "Normal":
|
||||
workersPrio = ThreadPriority.Normal;
|
||||
break;
|
||||
case "AboveNormal":
|
||||
workersPrio = ThreadPriority.AboveNormal;
|
||||
break;
|
||||
case "Highest":
|
||||
workersPrio = ThreadPriority.Highest;
|
||||
break;
|
||||
default:
|
||||
m_log.ErrorFormat("[YEngine] Invalid thread priority: '{0}'. Assuming Normal", priority);
|
||||
break;
|
||||
}
|
||||
m_SleepThread = StartMyThread(RunSleepThread, "Yengine sleep", ThreadPriority.Normal);
|
||||
for(int i = 0; i < numThreadScriptWorkers; i++)
|
||||
StartThreadWorker(i);
|
||||
StartThreadWorker(i, workersPrio);
|
||||
|
||||
m_log.InfoFormat("[YEngine]: Enabled, {0}.{1} Meg (0x{2}) stacks",
|
||||
(m_StackSize >> 20).ToString(),
|
||||
|
|
|
@ -56,13 +56,13 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
}
|
||||
}
|
||||
|
||||
public void StartThreadWorker(int i)
|
||||
public void StartThreadWorker(int i, ThreadPriority priority)
|
||||
{
|
||||
Thread thd;
|
||||
if(i >= 0)
|
||||
thd = Yengine.StartMyThread(RunScriptThread, "YScript" + i.ToString(), ThreadPriority.BelowNormal);
|
||||
thd = Yengine.StartMyThread(RunScriptThread, "YScript" + i.ToString(), priority);
|
||||
else
|
||||
thd = Yengine.StartMyThread(RunScriptThread, "YScript", ThreadPriority.BelowNormal);
|
||||
thd = Yengine.StartMyThread(RunScriptThread, "YScript", priority);
|
||||
lock(m_WakeUpLock)
|
||||
m_RunningInstances.Add(thd.ManagedThreadId, null);
|
||||
}
|
||||
|
|
|
@ -933,17 +933,12 @@
|
|||
; PriceGroupCreate = 0
|
||||
|
||||
[YEngine]
|
||||
;; experimental engine
|
||||
;; implements non preemptive microthreading, so fixing problems like llSleep or long events handlers
|
||||
;; but those will suffer from timeslicing, so will be slower.
|
||||
;; warning: scripts state is lost on TP or cross to Xengine regions (cars stop, etc)
|
||||
;; ignore its extensions (subset of original XMRengine), those are still undefined.
|
||||
Enabled = false
|
||||
ScriptStackSize = 256
|
||||
ScriptHeapSize = 256
|
||||
UseSourceHashCode = true
|
||||
MinTimerInterval = 0.1
|
||||
;ScriptBasePath="ScriptEngines"
|
||||
; Enabled = false
|
||||
|
||||
|
||||
[XEngine]
|
||||
;# {Enabled} {} {Enable the XEngine scripting engine?} {true false} true
|
||||
|
|
|
@ -1750,6 +1750,33 @@
|
|||
; MeshModelAllowTextureToInventory = true
|
||||
|
||||
|
||||
[YEngine]
|
||||
;; implements non preemptive microthreading, so fixing problems like llSleep or long events handlers
|
||||
;; but those will suffer from timeslicing, so will be slower.
|
||||
;; warning: scripts state is lost on TP or cross to Xengine regions (cars stop, etc)
|
||||
;; ignore its extensions (subset of original XMRengine), those are still undefined.
|
||||
;Enabled = false
|
||||
|
||||
; maximum stack a script can use in KB
|
||||
;ScriptStackSize = 2048
|
||||
|
||||
; maximum heap memory a script can use in KB
|
||||
;ScriptHeapSize = 1024
|
||||
|
||||
; number of threads to execute script. Too many threads can have negative impact on other region operations
|
||||
;NumThreadScriptWorkers = 2
|
||||
|
||||
; Priority of those threads (Lowest, BelowNormal, Normal, AboveNormal or Highest). Higher priorit can have negative impact on other region operations
|
||||
;Priority = Normal
|
||||
|
||||
; to reuse binary compare sources using a hash codes of them or full text
|
||||
UseSourceHashCode = true
|
||||
|
||||
MinTimerInterval = 0.1
|
||||
|
||||
; scripts states and cache parent folder location
|
||||
;ScriptBasePath="ScriptEngines"
|
||||
|
||||
|
||||
[XEngine]
|
||||
; Enable this engine in this OpenSim instance
|
||||
|
|
Loading…
Reference in New Issue