Application::DeclareZonesDir(Application::GetSysconfDir() + "/icinga2/zones.d");
Application::DeclareRunAsUser(ICINGA_USER);
Application::DeclareRunAsGroup(ICINGA_GROUP);
- Application::DeclareConcurrency(Utility::PhysicalConcurrency());
+ Application::DeclareConcurrency(boost::thread::hardware_concurrency());
if (!ScriptGlobal::Exists("UseVfork"))
#ifdef __APPLE__
}
#endif /* _WIN32 */
-
-int Utility::PhysicalConcurrency(void)
-{
-#if BOOST_VERSION >= 106100
- return boost::thread::physical_concurrency();
-#elif defined(__linux__)
- std::ifstream fp("/proc/cpuinfo");
- std::string line;
- bool htFlag = false;
-
- while (std::getline(fp, line)) {
- std::vector<String> tokens;
- boost::algorithm::split(tokens, line, boost::is_any_of(":"));
-
- if (tokens.size() != 2)
- continue;
-
- String key = tokens[0].Trim();
- String value = tokens[1].Trim();
-
- if (key != "flags")
- continue;
-
- std::vector<String> flags;
- boost::algorithm::split(flags, value, boost::is_any_of(" "));
-
- if (std::find(flags.begin(), flags.end(), "ht") != flags.end()) {
- htFlag = true;
- break;
- }
- }
-
- return boost::thread::hardware_concurrency() / (htFlag ? 2 : 1);
-#elif defined(_WIN32)
- DWORD size = 0;
-
- GetLogicalProcessorInformation(NULL, &size);
-
- if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
- return boost::thread::hardware_concurrency();
-
- std::vector<SYSTEM_LOGICAL_PROCESSOR_INFORMATION> info(size / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION));
-
- if (GetLogicalProcessorInformation(&info.front(), &size) == FALSE)
- return boost::thread::hardware_concurrency();
-
- int ncpus = 0;
-
- BOOST_FOREACH(const SYSTEM_LOGICAL_PROCESSOR_INFORMATION& slpi, info) {
- if (slpi.Relationship == RelationProcessorCore)
- ncpus++;
- }
-
- return ncpus;
-#elif defined(__APPLE__)
- int ncpus;
- size_t size = sizeof(ncpus);
-
- if (sysctlbyname("hw.physicalcpu", &ncpus, &size, NULL, 0) == 0)
- return ncpus;
- else
- return boost::thread::hardware_concurrency();
-#else /* __APPLE__ */
- return boost::thread::hardware_concurrency();
-#endif /* __APPLE__ */
-}