Как узнать, включена ли 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%, что потребует дополнительной диагностики, чтобы найти причину проблемы (возможно, отдельный поток).