Редактировать: Mongodb рассмотрел этот вопрос, так как я написал этот ответ. Их рекомендация составляет https://docs.mongodb.com/master/tutorial/transparent-huge-pages/ и, вероятно, должна быть вашим решением. Мой первоначальный ответ по-прежнему будет работать, но теперь я считаю, что официальное решение доступно.
Оригинальный ответ: Согласно документации MongoDB, http://docs.mongodb.org/manual/reference/transparent-huge-pages/ и поддержки, https://jira.mongodb.org/browse/DOCS-2131, transparent_hugepage (ТНР) предназначен для создания меньшего количества больших блоков памяти, а не много маленьких блоков памяти в системах с большим количеством памяти. Это здорово, если вашему программному обеспечению требуются большие непрерывные обращения к памяти. Тем не менее, для MongoDB, независимо от доступной памяти, для этого требуется множество небольших обращений к памяти и, следовательно, лучше работает с отключенным THP.
Это заставляет меня думать, что в любом случае это сработает, но вы получите лучшую производительность mongo (или любой базы данных) с отключенным THP, что даст вам меньшие укусы памяти. Если у вас не так много памяти, THP, вероятно, должен быть вне зависимости от того, что вы запускаете.
Несколько способов сделать это изложены в ссылке выше. Наиболее универсально применимым представляется редактирование rc.local.
$ sudo nano /etc/rc.local
Вставьте следующие строки перед линией «выход 0».
...
if test -f /sys/kernel/mm/transparent_hugepage/khugepaged/defrag; then
echo 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
exit 0
Примечание: RedHat на основе системы могут использовать "redhat_transparent_hugepage", а не "transparent_hugepage" и могут быть проверены:
ls /sys/kernel/mm/*transparent_hugepage*/enabled
cat /sys/kernel/mm/*transparent_hugepage*/enabled
Чтобы применить изменения, перезагрузите компьютер (который будет работать rc.local) или:
$ sudo su
# source /etc/rc.local
# service mongod restart
# exit
правильно применить изменения, сделанные выше
Способ просмотра: Google/Ubuntu установил его «всегда», так как это хорошо в общем случае, и что MongoDB предполагает, что «никогда» лучше в специальном случае (особый случай, когда вы используете MongoDB) – nos