如何判断 MongoDB 服务器上是否启用了 NUMA?

如何判断 MongoDB 服务器上是否启用了 NUMA?

我们的 mongodb 进程持续使用 >100% 的 CPU(这是在 Linode 上的 Ubuntu 64 位服务器上),我们正在努力提高性能。

我们发现的一个建议是 MongoDB 和 NUMA 不能很好地协同工作:http://docs.mongodb.org/manual/administration/production-notes/#production-numa

我注意到/proc/sys/vm/zone_reclaim_mode已设置为 0 并且 numactl 当前尚未安装。

我的问题:如何知道我们的服务器是否已启用 NUMA,以及我们是否应该按照上面链接中的建议使用以下命令启动 Mongo?

numactl --interleave=all /usr/bin/local/mongod

以下是内容/proc/cpuinfo(由于除“处理器”行之外的输出相同,因此前 3 部分被抑制):

processor       : 3
vendor_id       : GenuineIntel
cpu family      : 6
model           : 45
model name      : Intel(R) Xeon(R) CPU E5-2650L 0 @ 1.80GHz
stepping        : 7
microcode       : 0x70a
cpu MHz         : 1800.077
cache size      : 20480 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 4
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl nonstop_tsc pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes hypervisor lahf_lm ida arat epb pln pts dtherm
bogomips        : 3600.15
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

答案1

dmesg | grep -i numa

这将告诉您您的服务器是否启用了 numa。

numactl -s 将告诉您 numa 是否在每个进程中启用。

如果生产节点不应该使用 numa,那么您可能也不应该使用。我建议您不要依赖通过 numactl 关闭它,而应该通过 BIOS 完全关闭 numa。

在我进行一些性能测试时,我曾看到 numa 彻底毁掉了其他 Java 应用程序的服务器性能。看到它毁掉 Mongo 这样的 C/C++ 应用程序真是令人惊讶!

我想透露的是,您的原始问题与您的问题不同。更改 numa 设置可能无法解决您的 100% CPU 问题。您可能会发现在消除 numa 卡后,您的 CPU 使用率仍然为 100%,这将需要更多诊断才能找到问题的根源(可能需要单独的线程)。

相关内容