Skip to content

Commit

Permalink
Revert "Fix incorrect detection of the 'Concurrency' variable"
Browse files Browse the repository at this point in the history
This reverts commit 585f053.

refs #12456
  • Loading branch information
gunnarbeutner committed Aug 19, 2016
1 parent b5637a2 commit aeaca5e
Show file tree
Hide file tree
Showing 5 changed files with 2 additions and 71 deletions.
2 changes: 1 addition & 1 deletion icinga-app/icinga.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ int Main(void)
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__
Expand Down
2 changes: 1 addition & 1 deletion lib/base/application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1344,7 +1344,7 @@ void Application::DeclareConcurrency(int ncpus)
*/
int Application::GetConcurrency(void)
{
static Value defaultConcurrency = Utility::PhysicalConcurrency();
Value defaultConcurrency = boost::thread::hardware_concurrency();
return ScriptGlobal::Get("Concurrency", &defaultConcurrency);
}

Expand Down
1 change: 0 additions & 1 deletion lib/base/unix.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
#include <sys/time.h>
#include <sys/resource.h>
#include <strings.h>
#include <sys/sysctl.h>

typedef int SOCKET;
#define INVALID_SOCKET (-1)
Expand Down
66 changes: 0 additions & 66 deletions lib/base/utility.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1936,69 +1936,3 @@ String Utility::GetIcingaDataPath(void)
}

#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__ */
}
2 changes: 0 additions & 2 deletions lib/base/utility.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,6 @@ class I2_BASE_API Utility
static void IncrementTime(double);
#endif /* I2_DEBUG */

static int PhysicalConcurrency(void);

private:
Utility(void);
static void CollectPaths(const String& path, std::vector<String>& paths);
Expand Down

0 comments on commit aeaca5e

Please sign in to comment.