linux – 为什么mongodb会抱怨transparent_hugepage?

前端之家收集整理的这篇文章主要介绍了linux – 为什么mongodb会抱怨transparent_hugepage?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

有几个问题已经在询问如何修复mongodb警告:

** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always.'
**        We suggest setting it to 'never'

但我想知道是否应该修复它.我在Google云上运行的Ubuntu VM上收到MongoDB 3.0.1的警告.我应该相信MongoDB“永远不会更好”吗?或者,我应该相信Google / Ubuntu,他们将其设置为“始终”是有充分理由的吗?我想有一些权衡需要考虑,不知道我要交易什么来保留它或修复它.

询问如何修复它很好,但询问是否修复它似乎更明智.

最佳答案
编辑:自从我写这个答案以来,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(THP)旨在创建更少的大内存块,而不是具有大量内存的系统中的许多小内存块.如果您的软件需要大量连续的内存访问,这非常有用.但是,对于MongoDB,无论可用内存如何,它都需要大量较小的内存访问,因此在禁用THP时性能会更好.

这让我觉得无论哪种方式都可行,但是你可以通过关闭THP获得更好的mongo(或任何数据库)性能,从而为你提供更小的内存.如果你没有太多记忆,无论你跑什么,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

正确应用上面所做的更改

原文链接:https://www.f2er.com/linux/440772.html

猜你在找的Linux相关文章