Назад | Перейти на главную страницу

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

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

Мы обнаружили одно предположение, что 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:
dmesg | grep -i numa

Это скажет вам, включен ли ваш сервер numa.

numactl -s сообщит вам, включена ли numa для каждого процесса.

Если производственные узлы не должны использовать numa, то, вероятно, и вам не следует. Я бы посоветовал вместо того, чтобы полагаться на выключение через numactl, вы можете и, вероятно, обычно должны полностью выключить numa через BIOS.

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

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