summaryrefslogtreecommitdiff
path: root/src/mongo/util/processinfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/util/processinfo.h')
-rw-r--r--src/mongo/util/processinfo.h23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/mongo/util/processinfo.h b/src/mongo/util/processinfo.h
index 942ffc54136..361276d5bf3 100644
--- a/src/mongo/util/processinfo.h
+++ b/src/mongo/util/processinfo.h
@@ -113,6 +113,13 @@ public:
}
/**
+ * Get the number of CPU sockets
+ */
+ static unsigned getNumCpuSockets() {
+ return sysInfo().numCpuSockets;
+ }
+
+ /**
* Get the number of cores available. Make a best effort to get the cores for this process.
* If that information is not available, get the total number of CPUs.
*/
@@ -142,6 +149,16 @@ public:
}
/**
+ * Get the number of NUMA nodes if NUMA is enabled, or 1 otherwise.
+ */
+ static unsigned long getNumNumaNodes() {
+ if (sysInfo().hasNuma) {
+ return sysInfo().numNumaNodes;
+ }
+ return 1;
+ }
+
+ /**
* Determine if we need to workaround slow msync performance on Illumos/Solaris
*/
static bool preferMsyncOverFSync() {
@@ -180,9 +197,11 @@ private:
unsigned long long memLimit;
unsigned numCores;
unsigned numPhysicalCores;
+ unsigned numCpuSockets;
unsigned long long pageSize;
std::string cpuArch;
bool hasNuma;
+ unsigned numNumaNodes;
BSONObj _extraStats;
// On non-Solaris (ie, Linux, Darwin, *BSD) kernels, prefer msync.
@@ -198,8 +217,10 @@ private:
memLimit(0),
numCores(0),
numPhysicalCores(0),
+ numCpuSockets(0),
pageSize(0),
hasNuma(false),
+ numNumaNodes(0),
preferMsyncOverFSync(true) {
// populate SystemInfo during construction
collectSystemInfo();
@@ -230,8 +251,6 @@ private:
ProcessId _pid;
- static bool checkNumaEnabled();
-
static const SystemInfo& sysInfo() {
static ProcessInfo::SystemInfo systemInfo;
return systemInfo;