diff options
Diffstat (limited to 'src/mongo/util/processinfo.h')
-rw-r--r-- | src/mongo/util/processinfo.h | 23 |
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; |