aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Application/Application.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Application/Application.cs')
-rw-r--r--OpenSim/Region/Application/Application.cs58
1 files changed, 29 insertions, 29 deletions
diff --git a/OpenSim/Region/Application/Application.cs b/OpenSim/Region/Application/Application.cs
index e441cc8..5cb6a88 100644
--- a/OpenSim/Region/Application/Application.cs
+++ b/OpenSim/Region/Application/Application.cs
@@ -86,9 +86,9 @@ namespace OpenSim
86 if (logConfigFile != String.Empty) 86 if (logConfigFile != String.Empty)
87 { 87 {
88 XmlConfigurator.Configure(new System.IO.FileInfo(logConfigFile)); 88 XmlConfigurator.Configure(new System.IO.FileInfo(logConfigFile));
89 m_log.InfoFormat("[OPENSIM MAIN]: configured log4net using \"{0}\" as configuration file", 89 m_log.InfoFormat("[OPENSIM MAIN]: configured log4net using \"{0}\" as configuration file",
90 logConfigFile); 90 logConfigFile);
91 } 91 }
92 else 92 else
93 { 93 {
94 XmlConfigurator.Configure(); 94 XmlConfigurator.Configure();
@@ -104,22 +104,22 @@ namespace OpenSim
104 "[OPENSIM MAIN]: Environment variable MONO_THREADS_PER_CPU is {0}", monoThreadsPerCpu ?? "unset"); 104 "[OPENSIM MAIN]: Environment variable MONO_THREADS_PER_CPU is {0}", monoThreadsPerCpu ?? "unset");
105 105
106 // Verify the Threadpool allocates or uses enough worker and IO completion threads 106 // Verify the Threadpool allocates or uses enough worker and IO completion threads
107 // .NET 2.0, workerthreads default to 50 * numcores 107 // .NET 2.0, workerthreads default to 50 * numcores
108 // .NET 3.0, workerthreads defaults to 250 * numcores 108 // .NET 3.0, workerthreads defaults to 250 * numcores
109 // .NET 4.0, workerthreads are dynamic based on bitness and OS resources 109 // .NET 4.0, workerthreads are dynamic based on bitness and OS resources
110 // Max IO Completion threads are 1000 on all 3 CLRs 110 // Max IO Completion threads are 1000 on all 3 CLRs
111 // 111 //
112 // Mono 2.10.9 to at least Mono 3.1, workerthreads default to 100 * numcores, iocp threads to 4 * numcores 112 // Mono 2.10.9 to at least Mono 3.1, workerthreads default to 100 * numcores, iocp threads to 4 * numcores
113 int workerThreadsMin = 500; 113 int workerThreadsMin = 500;
114 int workerThreadsMax = 1000; // may need further adjustment to match other CLR 114 int workerThreadsMax = 1000; // may need further adjustment to match other CLR
115 int iocpThreadsMin = 1000; 115 int iocpThreadsMin = 1000;
116 int iocpThreadsMax = 2000; // may need further adjustment to match other CLR 116 int iocpThreadsMax = 2000; // may need further adjustment to match other CLR
117 117
118 { 118 {
119 int currentMinWorkerThreads, currentMinIocpThreads; 119 int currentMinWorkerThreads, currentMinIocpThreads;
120 System.Threading.ThreadPool.GetMinThreads(out currentMinWorkerThreads, out currentMinIocpThreads); 120 System.Threading.ThreadPool.GetMinThreads(out currentMinWorkerThreads, out currentMinIocpThreads);
121 m_log.InfoFormat( 121 m_log.InfoFormat(
122 "[OPENSIM MAIN]: Runtime gave us {0} min worker threads and {1} min IOCP threads", 122 "[OPENSIM MAIN]: Runtime gave us {0} min worker threads and {1} min IOCP threads",
123 currentMinWorkerThreads, currentMinIocpThreads); 123 currentMinWorkerThreads, currentMinIocpThreads);
124 } 124 }
125 125
@@ -138,30 +138,30 @@ namespace OpenSim
138 m_log.InfoFormat("[OPENSIM MAIN]: Limiting max worker threads to {0}",workerThreads); 138 m_log.InfoFormat("[OPENSIM MAIN]: Limiting max worker threads to {0}",workerThreads);
139 } 139 }
140 140
141 // Increase the number of IOCP threads available. 141 // Increase the number of IOCP threads available.
142 // Mono defaults to a tragically low number (24 on 6-core / 8GB Fedora 17) 142 // Mono defaults to a tragically low number (24 on 6-core / 8GB Fedora 17)
143 if (iocpThreads < iocpThreadsMin) 143 if (iocpThreads < iocpThreadsMin)
144 { 144 {
145 iocpThreads = iocpThreadsMin; 145 iocpThreads = iocpThreadsMin;
146 m_log.InfoFormat("[OPENSIM MAIN]: Bumping up max IOCP threads to {0}",iocpThreads); 146 m_log.InfoFormat("[OPENSIM MAIN]: Bumping up max IOCP threads to {0}",iocpThreads);
147 } 147 }
148 // Make sure we don't overallocate IOCP threads and thrash system resources 148 // Make sure we don't overallocate IOCP threads and thrash system resources
149 if ( iocpThreads > iocpThreadsMax ) 149 if ( iocpThreads > iocpThreadsMax )
150 { 150 {
151 iocpThreads = iocpThreadsMax; 151 iocpThreads = iocpThreadsMax;
152 m_log.InfoFormat("[OPENSIM MAIN]: Limiting max IOCP completion threads to {0}",iocpThreads); 152 m_log.InfoFormat("[OPENSIM MAIN]: Limiting max IOCP completion threads to {0}",iocpThreads);
153 } 153 }
154 // set the resulting worker and IO completion thread counts back to ThreadPool 154 // set the resulting worker and IO completion thread counts back to ThreadPool
155 if ( System.Threading.ThreadPool.SetMaxThreads(workerThreads, iocpThreads) ) 155 if ( System.Threading.ThreadPool.SetMaxThreads(workerThreads, iocpThreads) )
156 { 156 {
157 m_log.InfoFormat( 157 m_log.InfoFormat(
158 "[OPENSIM MAIN]: Threadpool set to {0} max worker threads and {1} max IOCP threads", 158 "[OPENSIM MAIN]: Threadpool set to {0} max worker threads and {1} max IOCP threads",
159 workerThreads, iocpThreads); 159 workerThreads, iocpThreads);
160 } 160 }
161 else 161 else
162 { 162 {
163 m_log.Warn("[OPENSIM MAIN]: Threadpool reconfiguration failed, runtime defaults still in effect."); 163 m_log.Warn("[OPENSIM MAIN]: Threadpool reconfiguration failed, runtime defaults still in effect.");
164 } 164 }
165 165
166 // Check if the system is compatible with OpenSimulator. 166 // Check if the system is compatible with OpenSimulator.
167 // Ensures that the minimum system requirements are met 167 // Ensures that the minimum system requirements are met
@@ -179,7 +179,7 @@ namespace OpenSim
179 Culture.SetCurrentCulture(); 179 Culture.SetCurrentCulture();
180 180
181 // Validate that the user has the most basic configuration done 181 // Validate that the user has the most basic configuration done
182 // If not, offer to do the most basic configuration for them warning them along the way of the importance of 182 // If not, offer to do the most basic configuration for them warning them along the way of the importance of
183 // reading these files. 183 // reading these files.
184 /* 184 /*
185 m_log.Info("Checking for reguired configuration...\n"); 185 m_log.Info("Checking for reguired configuration...\n");
@@ -188,13 +188,13 @@ namespace OpenSim
188 || (File.Exists(Path.Combine(Util.configDir(), "opensim.ini"))) 188 || (File.Exists(Path.Combine(Util.configDir(), "opensim.ini")))
189 || (File.Exists(Path.Combine(Util.configDir(), "openSim.ini"))) 189 || (File.Exists(Path.Combine(Util.configDir(), "openSim.ini")))
190 || (File.Exists(Path.Combine(Util.configDir(), "Opensim.ini"))); 190 || (File.Exists(Path.Combine(Util.configDir(), "Opensim.ini")));
191 191
192 bool StanaloneCommon_ProperCased = File.Exists(Path.Combine(Path.Combine(Util.configDir(), "config-include"), "StandaloneCommon.ini")); 192 bool StanaloneCommon_ProperCased = File.Exists(Path.Combine(Path.Combine(Util.configDir(), "config-include"), "StandaloneCommon.ini"));
193 bool StanaloneCommon_lowercased = File.Exists(Path.Combine(Path.Combine(Util.configDir(), "config-include"), "standalonecommon.ini")); 193 bool StanaloneCommon_lowercased = File.Exists(Path.Combine(Path.Combine(Util.configDir(), "config-include"), "standalonecommon.ini"));
194 bool GridCommon_ProperCased = File.Exists(Path.Combine(Path.Combine(Util.configDir(), "config-include"), "GridCommon.ini")); 194 bool GridCommon_ProperCased = File.Exists(Path.Combine(Path.Combine(Util.configDir(), "config-include"), "GridCommon.ini"));
195 bool GridCommon_lowerCased = File.Exists(Path.Combine(Path.Combine(Util.configDir(), "config-include"), "gridcommon.ini")); 195 bool GridCommon_lowerCased = File.Exists(Path.Combine(Path.Combine(Util.configDir(), "config-include"), "gridcommon.ini"));
196 196
197 if ((OpenSim_Ini) 197 if ((OpenSim_Ini)
198 && ( 198 && (
199 (StanaloneCommon_ProperCased 199 (StanaloneCommon_ProperCased
200 || StanaloneCommon_lowercased 200 || StanaloneCommon_lowercased
@@ -212,7 +212,7 @@ namespace OpenSim
212 "yes"); 212 "yes");
213 if (resp == "yes") 213 if (resp == "yes")
214 { 214 {
215 215
216 if (!(OpenSim_Ini)) 216 if (!(OpenSim_Ini))
217 { 217 {
218 try 218 try
@@ -312,7 +312,7 @@ namespace OpenSim
312 m_saveCrashDumps = configSource.Configs["Startup"].GetBoolean("save_crashes", false); 312 m_saveCrashDumps = configSource.Configs["Startup"].GetBoolean("save_crashes", false);
313 313
314 // load Crash directory config 314 // load Crash directory config
315 m_crashDir = configSource.Configs["Startup"].GetString("crash_dir", m_crashDir); 315 m_crashDir = configSource.Configs["Startup"].GetString("crash_dir", m_crashDir);
316 316
317 if (background) 317 if (background)
318 { 318 {
@@ -320,9 +320,9 @@ namespace OpenSim
320 m_sim.Startup(); 320 m_sim.Startup();
321 } 321 }
322 else 322 else
323 { 323 {
324 m_sim = new OpenSim(configSource); 324 m_sim = new OpenSim(configSource);
325 325
326 m_sim.Startup(); 326 m_sim.Startup();
327 327
328 while (true) 328 while (true)