(转)mongoDB 禁用大内存页面 transparent_hugepage=never
最近在学mongoDB,安装倒没什么困难,有yum仓库。不过接入ctl后的一条warning倒挺让人烦心的。
|
1
2
|
2015-03-22T09:27:00.222+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.2015-03-22T09:27:00.222+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' |
如果在运行时解决这问题,也不困难,只需要修改hugepage的设置就可以了。执行下面两条命令
|
1
2
|
echo never >> /sys/kernel/mm/transparent_hugepage/enabledecho never >> /sys/kernel/mm/transparent_hugepage/defrag |
别忘了重启你的mongoDB,这条warning就消失了。不过下次重新启动系统,这些设置就会消失。
不过想在启动时关掉大内存页面就废了我不少时间了。
首先是网上有人说,把上面的两行命令写入/etc/rc.local,如果是fedora21这样新的系统,应该就是/etc/rc.d/rc.local。不过这无济于事。
我们先看看官方文档怎么说。https://www.kernel.org/doc/Documentation/vm/transhuge.txt 这是关于大内存页面的linux内核文档说明,里面是这样描述如何关闭的。
|
1
2
3
4
5
6
|
== Boot parameter ==You can change the sysfs boot time defaults of Transparent HugepageSupport by passing the parameter "transparent_hugepage=always" or"transparent_hugepage=madvise" or "transparent_hugepage=never"(without "") to the kernel command line. |
它说要把 transparent_hugepage=never 这个参数写入 内核命令行(kernel command line)。不过这个内核命令行又在哪里呢。于是继续找,发现了红帽公司的一份补充说明 https://access.redhat.com/solutions/46111 , 里面是这样描述的。
|
1
2
3
4
5
|
To disable THP at boot timeAppend the following to the kernel command line in grub.conf:transparent_hugepage=never |
好了,离真相又更近一步了,不过我的是grub2,所以这篇文章所描述的grub.conf并不存在。继续找,发现了这两篇文章https://lists.fedoraproject.org/pipermail/users/2012-January/412889.html 跟 http://docs.mongodb.org/manual/reference/transparent-huge-pages/(mongoDB的官方文档)。这两篇终于看见光明了,为什么我一开始没翻到mongodb的官方文档?果断投诉google,你家的搜索不靠谱啊。前面一篇基本上是正确的,不过下面的命令写错了
|
1
2
3
|
grub2-mkconfig /boot/grub2/grub.cfg应该是grub2-mkconfig -o /boot/grub2/grub.cfg |
不过mongodb的官方文档还留下了这么一句话
|
1
|
See your operating system’s documentation for details on the precise location of the grub-legacy or grub2 configuration file. |
所以为了保险起见,我还是认真研读了 http://docs.fedoraproject.org/en-US/Fedora/21/html/System_Administrators_Guide/sec-GRUB_2_over_Serial_Console.html#sec-Configuring_GRUB_2 以防万一。
终于在折腾了一个晚上之后,搞定了。如果你也是grub2的linux系统,请通过以下步骤关闭大内存页面。
step1 编辑 /etc/default/grub,在GRUB_CMDLINE_LINUX加入选项 transparent_hugepage=never
|
1
2
3
4
5
6
7
|
GRUB_TIMEOUT=5GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"GRUB_DEFAULT=savedGRUB_DISABLE_SUBMENU=trueGRUB_TERMINAL_OUTPUT="console"GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/swap rd.lvm.lv=fedora/root rhgb quiet transparent_hugepage=never"GRUB_DISABLE_RECOVERY="true" |
step2 重新生成grub配置文件
|
1
2
3
4
|
On BIOS-based machines, issue the following command as root:~]# grub2-mkconfig -o /boot/grub2/grub.cfgOn UEFI-based machines, issue the following command as root:~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg |
step3 重启你的系统
至此大功告成,如果你使用的是grub,请把选项写入grub.conf文件就好了。
查询hugepage状态,第一种方式
|
1
2
3
4
|
[root@localhost yucanlin]# cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never][root@localhost yucanlin]# cat /sys/kernel/mm/transparent_hugepage/defrag always madvise [never] |
never就对了。
第二种方式
|
1
2
3
4
5
6
7
|
[yucanlin@localhost ~]$ grep Huge /proc/meminfoAnonHugePages: 0 kBHugePages_Total: 0HugePages_Free: 0HugePages_Rsvd: 0HugePages_Surp: 0Hugepagesize: 2048 kB |
0就对了。
不过有个小遗憾,重启后我发现 enabled 是never,但defrag却依然是always,不过经过查询meminfo,大内存页面是被禁用了。就不去管他了。
(转)mongoDB 禁用大内存页面 transparent_hugepage=never的更多相关文章
- 转://Linux大内存页Oracle数据库优化
PC Server发展到今天,在性能方面有着长足的进步.64位的CPU在数年前都已经进入到寻常的家用PC之中,更别说是更高端的PC Server:在Intel和AMD两大处理器巨头的努力下,x86 C ...
- 【云和恩墨】性能优化:Linux环境下合理配置大内存页(HugePage)
原创 2016-09-12 熊军 [云和恩墨]性能优化:Linux环境下合理配置大内存页(HugePage) 熊军(老熊) 云和恩墨西区总经理 Oracle ACED,ACOUG核心会员 PC S ...
- CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-3禁止交换和禁用大页面
1.禁止交换(每台机器都要做): 执行命令:vim /etc/sysctl.conf 增加一行:vm.swappiness=0 执行命令:sudo sysctl vm.swappiness=0 2.禁 ...
- mongodb 3.2配置内存缓存大小为MB/MongoDB 3.x内存限制配置
mongodb 3.2配置内存缓存大小为MB/MongoDB 3.x内存限制配置 转载自勤奋的小青蛙 mongodb占用内存非常高,这是因为官方为了提升存储的效率,设计就这么设计的. 但是大部分的个人 ...
- JVM优化之调整大内存分页(LargePage)
转自:http://cjjwzs.iteye.com/blog/1059381 本文将从内存分页的原理,如何调整分页大小两节内容,向你阐述LargePage对JVM的性能有何提升作用,并在文末点明了大 ...
- 内存页面的各种属性(就是Read, Write, Execute的组合)
PAGE_NOACCESS 禁止写入执行读取查看进程内存区域能发现,NOACCESS属性的内存页面都是FREE状态的(未提交使用的内存区域),只有内存区域最后的0x7FFE1000-0x7FFF000 ...
- MongoDB 如何使用内存?为什么内存满了?
最近接到多个MongoDB内存方面的线上case及社区问题咨询,主要集中在: 为什么我的 MongoDB 使用了 XX GB 内存? 一个机器上部署多个 Mongod 实例/进程,WiredTiger ...
- 实战课堂 | MongoDB如何使用内存?内存满了怎么破?
最近接到多个MongoDB内存方面的线上case及社区问题咨询,主要集中在: 为什么我的 MongoDB 使用了 XX GB 内存? 一个机器上部署多个 Mongod 实例/进程,WiredTiger ...
- PHP读写大“二进制”文件,不必申请很大内存(fopen、fread、fwrite、fclose)
<?php /** * 读写大二进制文件,不必申请很大内存 * 只有读取到内容才创建文件 * 保证目录可写 * * @param string $srcPath 源文件路径 * @param s ...
随机推荐
- 【JavaScript】JavaScript中的陷阱大集合
本文主要介绍怪异的Javascript,毋庸置疑,它绝对有怪异的一面.当软件开发者开始使用世界上使用最广泛的语言编写代码时,他们会在这个过 程中发现很多有趣的“特性”.即便是老练的Javascript ...
- [Angular2 Form] Use RxJS Streams with Angular 2 Forms
Angular 2 forms provide RxJS streams for you to work with the data and validity as it flows out of t ...
- Java生成 Word文档的并打印解决方案
户要求用程序生成标准的word文档,要能打印,而且不能变形,以前用过很多解决方案,都在客户严格要求下牺牲的无比惨烈. POI读word文档还行,写文档实在不敢恭维,复杂的样式很难控制不提,想象一下一个 ...
- OSG的HUD抬头文字显示
原文:http://blog.csdn.net/tmljs1988/article/details/7562926 可以运行 1. HUD流程图: 完整源代码如下: /*OSG中的HUD, ...
- Deepin Linux 安装JDK
最近在自己的笔记本上安装了Deepin Linux,虽然使用过程中发现一些bugs,但是总体感觉还不错,准备把她作为开发系统使用.系统自带的JDK是Open JDK,但是在做JAVA开发的时候通常需要 ...
- laravel 5.0 artisan 命令列表(中文简体)
#php artisan list Laravel Framework version Usage: [options] command [arguments] Options(选项): --help ...
- Python Counter() 的实现
Table of Contents 1. collections.Counter 源码实现 1.1. __init__ 1.2. update 1.3. most_common 1.3.1. item ...
- Solr DIH dataconfig配置
1. 配置文件data-config.xml定义了数据库的基本配置,以及导出数据的映射规则,即导出数据库表中对应哪些字段的值,以及对特定字段的值做如何处理 </pre><p>& ...
- 函数查询(Function Query)
函数查询 可以利用 numeric字段的值 或者 与字段相关的的某个特定的值的函数,来对文档进行评分. 1. 使用函数查询的方法 这里主要有三种方法可以使用函数查询,这三种s方法都是通过solr ...
- iOS 多线程讲解2
1.GCD其他方法 1.GCD应用 单例模式 static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ NSLog(@&qu ...