summaryrefslogtreecommitdiff
path: root/src/mongo/util/processinfo_solaris.cpp
diff options
context:
space:
mode:
authorMark Benvenuto <mark.benvenuto@mongodb.com>2015-06-20 00:22:50 -0400
committerMark Benvenuto <mark.benvenuto@mongodb.com>2015-06-20 10:56:02 -0400
commit9c2ed42daa8fbbef4a919c21ec564e2db55e8d60 (patch)
tree3814f79c10d7b490948d8cb7b112ac1dd41ceff1 /src/mongo/util/processinfo_solaris.cpp
parent01965cf52bce6976637ecb8f4a622aeb05ab256a (diff)
downloadmongo-9c2ed42daa8fbbef4a919c21ec564e2db55e8d60.tar.gz
SERVER-18579: Clang-Format - reformat code, no comment reflow
Diffstat (limited to 'src/mongo/util/processinfo_solaris.cpp')
-rw-r--r--src/mongo/util/processinfo_solaris.cpp320
1 files changed, 156 insertions, 164 deletions
diff --git a/src/mongo/util/processinfo_solaris.cpp b/src/mongo/util/processinfo_solaris.cpp
index 5cbb51740b4..f42717f82d0 100644
--- a/src/mongo/util/processinfo_solaris.cpp
+++ b/src/mongo/util/processinfo_solaris.cpp
@@ -52,194 +52,186 @@ using namespace std;
namespace mongo {
- /**
- * Read the first line from a file; return empty string on failure
- */
- static string readLineFromFile(const char* fname) {
- std::string fstr;
- std::ifstream f(fname);
- if (f.is_open()) {
- std::getline(f, fstr);
- }
- return fstr;
+/**
+ * Read the first line from a file; return empty string on failure
+ */
+static string readLineFromFile(const char* fname) {
+ std::string fstr;
+ std::ifstream f(fname);
+ if (f.is_open()) {
+ std::getline(f, fstr);
}
+ return fstr;
+}
- struct ProcPsinfo {
- ProcPsinfo() {
- FILE* f = fopen("/proc/self/psinfo", "r");
- massert(16846,
- mongoutils::str::stream() << "couldn't open \"/proc/self/psinfo\": "
- << errnoWithDescription(),
- f);
- size_t num = fread(&psinfo, sizeof(psinfo), 1, f);
- int err = errno;
- fclose(f);
- massert(16847,
- mongoutils::str::stream() << "couldn't read from \"/proc/self/psinfo\": "
- << errnoWithDescription(err),
- num == 1);
- }
- psinfo_t psinfo;
- };
-
- struct ProcUsage {
- ProcUsage() {
- FILE* f = fopen("/proc/self/usage", "r");
- massert(16848,
- mongoutils::str::stream() << "couldn't open \"/proc/self/usage\": "
- << errnoWithDescription(),
- f);
- size_t num = fread(&prusage, sizeof(prusage), 1, f);
- int err = errno;
- fclose(f);
- massert(16849,
- mongoutils::str::stream() << "couldn't read from \"/proc/self/usage\": "
- << errnoWithDescription(err),
- num == 1);
- }
- prusage_t prusage;
- };
+struct ProcPsinfo {
+ ProcPsinfo() {
+ FILE* f = fopen("/proc/self/psinfo", "r");
+ massert(16846,
+ mongoutils::str::stream()
+ << "couldn't open \"/proc/self/psinfo\": " << errnoWithDescription(),
+ f);
+ size_t num = fread(&psinfo, sizeof(psinfo), 1, f);
+ int err = errno;
+ fclose(f);
+ massert(16847,
+ mongoutils::str::stream()
+ << "couldn't read from \"/proc/self/psinfo\": " << errnoWithDescription(err),
+ num == 1);
+ }
+ psinfo_t psinfo;
+};
+
+struct ProcUsage {
+ ProcUsage() {
+ FILE* f = fopen("/proc/self/usage", "r");
+ massert(16848,
+ mongoutils::str::stream()
+ << "couldn't open \"/proc/self/usage\": " << errnoWithDescription(),
+ f);
+ size_t num = fread(&prusage, sizeof(prusage), 1, f);
+ int err = errno;
+ fclose(f);
+ massert(16849,
+ mongoutils::str::stream()
+ << "couldn't read from \"/proc/self/usage\": " << errnoWithDescription(err),
+ num == 1);
+ }
+ prusage_t prusage;
+};
- ProcessInfo::ProcessInfo(ProcessId pid) : _pid(pid) { }
- ProcessInfo::~ProcessInfo() { }
+ProcessInfo::ProcessInfo(ProcessId pid) : _pid(pid) {}
+ProcessInfo::~ProcessInfo() {}
- bool ProcessInfo::supported() {
- return true;
- }
+bool ProcessInfo::supported() {
+ return true;
+}
- int ProcessInfo::getVirtualMemorySize() {
- ProcPsinfo p;
- return static_cast<int>(p.psinfo.pr_size / 1024);
- }
+int ProcessInfo::getVirtualMemorySize() {
+ ProcPsinfo p;
+ return static_cast<int>(p.psinfo.pr_size / 1024);
+}
- int ProcessInfo::getResidentSize() {
- ProcPsinfo p;
- return static_cast<int>(p.psinfo.pr_rssize / 1024);
- }
+int ProcessInfo::getResidentSize() {
+ ProcPsinfo p;
+ return static_cast<int>(p.psinfo.pr_rssize / 1024);
+}
- double ProcessInfo::getSystemMemoryPressurePercentage() {
- return 0.0;
- }
+double ProcessInfo::getSystemMemoryPressurePercentage() {
+ return 0.0;
+}
- void ProcessInfo::getExtraInfo(BSONObjBuilder& info) {
- ProcUsage p;
- info.appendNumber("page_faults", static_cast<long long>(p.prusage.pr_majf));
- }
+void ProcessInfo::getExtraInfo(BSONObjBuilder& info) {
+ ProcUsage p;
+ info.appendNumber("page_faults", static_cast<long long>(p.prusage.pr_majf));
+}
- /**
- * Save a BSON obj representing the host system's details
- */
- void ProcessInfo::SystemInfo::collectSystemInfo() {
- struct utsname unameData;
- if (uname(&unameData) == -1) {
- log() << "Unable to collect detailed system information: " << strerror(errno) << endl;
- }
+/**
+ * Save a BSON obj representing the host system's details
+ */
+void ProcessInfo::SystemInfo::collectSystemInfo() {
+ struct utsname unameData;
+ if (uname(&unameData) == -1) {
+ log() << "Unable to collect detailed system information: " << strerror(errno) << endl;
+ }
- char buf_64[32];
- char buf_native[32];
- if (sysinfo(SI_ARCHITECTURE_64, buf_64, sizeof(buf_64)) != -1 &&
- sysinfo(SI_ARCHITECTURE_NATIVE, buf_native, sizeof(buf_native)) != -1) {
- addrSize = mongoutils::str::equals(buf_64, buf_native) ? 64 : 32;
- }
- else {
- log() << "Unable to determine system architecture: " << strerror(errno) << endl;
- }
+ char buf_64[32];
+ char buf_native[32];
+ if (sysinfo(SI_ARCHITECTURE_64, buf_64, sizeof(buf_64)) != -1 &&
+ sysinfo(SI_ARCHITECTURE_NATIVE, buf_native, sizeof(buf_native)) != -1) {
+ addrSize = mongoutils::str::equals(buf_64, buf_native) ? 64 : 32;
+ } else {
+ log() << "Unable to determine system architecture: " << strerror(errno) << endl;
+ }
- osType = unameData.sysname;
- osName = mongoutils::str::ltrim(readLineFromFile("/etc/release"));
- osVersion = unameData.version;
- pageSize = static_cast<unsigned long long>(sysconf(_SC_PAGESIZE));
- memSize = pageSize * static_cast<unsigned long long>(sysconf(_SC_PHYS_PAGES));
- numCores = static_cast<unsigned>(sysconf(_SC_NPROCESSORS_CONF));
- cpuArch = unameData.machine;
- hasNuma = checkNumaEnabled();
-
- // We prefer FSync over msync, when:
- // 1. Pre-Oracle Solaris 11.2 releases
- // 2. Illumos kernel releases (which is all non Oracle Solaris releases)
- preferMsyncOverFSync = false;
-
- if (mongoutils::str::startsWith(osName, "Oracle Solaris")) {
-
- std::vector<std::string> versionComponents;
- splitStringDelim(osVersion, &versionComponents, '.');
-
- if (versionComponents.size() > 1) {
- unsigned majorInt, minorInt;
- Status majorStatus =
- parseNumberFromString<unsigned>(versionComponents[0], &majorInt);
-
- Status minorStatus =
- parseNumberFromString<unsigned>(versionComponents[1], &minorInt);
-
- if (!majorStatus.isOK() || !minorStatus.isOK()) {
- warning() << "Could not parse OS version numbers from uname: " << osVersion;
- }
- else if ((majorInt == 11 && minorInt >= 2) || majorInt > 11) {
- preferMsyncOverFSync = true;
- }
- }
- else {
- warning() << "Could not parse OS version string from uname: " << osVersion;
+ osType = unameData.sysname;
+ osName = mongoutils::str::ltrim(readLineFromFile("/etc/release"));
+ osVersion = unameData.version;
+ pageSize = static_cast<unsigned long long>(sysconf(_SC_PAGESIZE));
+ memSize = pageSize * static_cast<unsigned long long>(sysconf(_SC_PHYS_PAGES));
+ numCores = static_cast<unsigned>(sysconf(_SC_NPROCESSORS_CONF));
+ cpuArch = unameData.machine;
+ hasNuma = checkNumaEnabled();
+
+ // We prefer FSync over msync, when:
+ // 1. Pre-Oracle Solaris 11.2 releases
+ // 2. Illumos kernel releases (which is all non Oracle Solaris releases)
+ preferMsyncOverFSync = false;
+
+ if (mongoutils::str::startsWith(osName, "Oracle Solaris")) {
+ std::vector<std::string> versionComponents;
+ splitStringDelim(osVersion, &versionComponents, '.');
+
+ if (versionComponents.size() > 1) {
+ unsigned majorInt, minorInt;
+ Status majorStatus = parseNumberFromString<unsigned>(versionComponents[0], &majorInt);
+
+ Status minorStatus = parseNumberFromString<unsigned>(versionComponents[1], &minorInt);
+
+ if (!majorStatus.isOK() || !minorStatus.isOK()) {
+ warning() << "Could not parse OS version numbers from uname: " << osVersion;
+ } else if ((majorInt == 11 && minorInt >= 2) || majorInt > 11) {
+ preferMsyncOverFSync = true;
}
+ } else {
+ warning() << "Could not parse OS version string from uname: " << osVersion;
}
-
- BSONObjBuilder bExtra;
- bExtra.append("kernelVersion", unameData.release);
- bExtra.append("pageSize", static_cast<long long>(pageSize));
- bExtra.append("numPages", static_cast<int>(sysconf(_SC_PHYS_PAGES)));
- bExtra.append("maxOpenFiles", static_cast<int>(sysconf(_SC_OPEN_MAX)));
- _extraStats = bExtra.obj();
}
- bool ProcessInfo::checkNumaEnabled() {
- lgrp_cookie_t cookie = lgrp_init(LGRP_VIEW_OS);
+ BSONObjBuilder bExtra;
+ bExtra.append("kernelVersion", unameData.release);
+ bExtra.append("pageSize", static_cast<long long>(pageSize));
+ bExtra.append("numPages", static_cast<int>(sysconf(_SC_PHYS_PAGES)));
+ bExtra.append("maxOpenFiles", static_cast<int>(sysconf(_SC_OPEN_MAX)));
+ _extraStats = bExtra.obj();
+}
- if (cookie == LGRP_COOKIE_NONE) {
- warning() << "lgrp_init failed: " << errnoWithDescription();
- return false;
- }
+bool ProcessInfo::checkNumaEnabled() {
+ lgrp_cookie_t cookie = lgrp_init(LGRP_VIEW_OS);
- ON_BLOCK_EXIT(lgrp_fini, cookie);
+ if (cookie == LGRP_COOKIE_NONE) {
+ warning() << "lgrp_init failed: " << errnoWithDescription();
+ return false;
+ }
- int groups = lgrp_nlgrps(cookie);
+ ON_BLOCK_EXIT(lgrp_fini, cookie);
- if (groups == -1) {
- warning() << "lgrp_nlgrps failed: " << errnoWithDescription();
- return false;
- }
+ int groups = lgrp_nlgrps(cookie);
- // NUMA machines have more then 1 locality group
- return groups > 1;
+ if (groups == -1) {
+ warning() << "lgrp_nlgrps failed: " << errnoWithDescription();
+ return false;
}
- bool ProcessInfo::blockCheckSupported() {
- return true;
- }
+ // NUMA machines have more then 1 locality group
+ return groups > 1;
+}
- bool ProcessInfo::blockInMemory(const void* start) {
- char x = 0;
- if (mincore(static_cast<char*>(const_cast<void*>(alignToStartOfPage(start))),
- getPageSize(),
- &x)) {
- log() << "mincore failed: " << errnoWithDescription() << endl;
- return 1;
- }
- return x & 0x1;
- }
+bool ProcessInfo::blockCheckSupported() {
+ return true;
+}
- bool ProcessInfo::pagesInMemory(const void* start, size_t numPages, std::vector<char>* out) {
- out->resize(numPages);
- if (mincore(static_cast<char*>(const_cast<void*>(alignToStartOfPage(start))),
- numPages * getPageSize(),
- &out->front())) {
- log() << "mincore failed: " << errnoWithDescription() << endl;
- return false;
- }
- for (size_t i = 0; i < numPages; ++i) {
- (*out)[i] &= 0x1;
- }
- return true;
+bool ProcessInfo::blockInMemory(const void* start) {
+ char x = 0;
+ if (mincore(
+ static_cast<char*>(const_cast<void*>(alignToStartOfPage(start))), getPageSize(), &x)) {
+ log() << "mincore failed: " << errnoWithDescription() << endl;
+ return 1;
}
+ return x & 0x1;
+}
+bool ProcessInfo::pagesInMemory(const void* start, size_t numPages, std::vector<char>* out) {
+ out->resize(numPages);
+ if (mincore(static_cast<char*>(const_cast<void*>(alignToStartOfPage(start))),
+ numPages * getPageSize(),
+ &out->front())) {
+ log() << "mincore failed: " << errnoWithDescription() << endl;
+ return false;
+ }
+ for (size_t i = 0; i < numPages; ++i) {
+ (*out)[i] &= 0x1;
+ }
+ return true;
+}
}