Как узнать, включена ли NUMA на сервере MongoDB?

Наш процесс mongodb последовательно использует>100% нашего ЦП (это на 64-битном сервере Ubuntu на Linode), и мы ищем улучшения производительности.

Мы обнаружили, что MongoDB и NUMA не очень хорошо работают вместе: http://docs.mongodb.org/manual/administration/production-notes/.

Я замечаю что /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, вы можете и, вероятно, обычно должны полностью выключать numa через BIOS.

Я видел, как numa полностью снизила производительность сервера с другими Java-приложениями, когда проводила некоторые тесты производительности. Видеть, как это испортило приложение C/C++, такое как Mongo, удивительно!

Я хотел бы раскрыть, что ваша оригинальная проблема отличается от вашего вопроса. Изменение настроек numa может не решить проблему со 100% процессором. После удаления карты numa вы можете обнаружить, что у вас по-прежнему используется процессор на 100%, что потребует дополнительной диагностики, чтобы найти причину проблемы (возможно, отдельный поток).

Другие вопросы по тегам