(转)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/enabled echo 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 Hugepage Support 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 time Append 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=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_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.cfg On 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/meminfo AnonHugePages: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 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 ...
随机推荐
- [ES6] 14. Generator -- 1. yield & next()
Generators in ECMAscript 6 are first-class coroutines that produce encapsulated suspended execution ...
- Matlab程序怎样打包
本人安装的版本号是MATLAB(R2010b) 打包过程例如以下: MATLAB命令窗体输入deploytool,打开一个Eeployment Project的窗体: 1.在Name输入你想要打包后的 ...
- UICollectionViewController
UICollectionViewController 目录 概述 UICollectionView UICollectionViewCell 代理方法 详细细节 概述 UICollectionView ...
- jQuery.validate的this.optional(element)作用
今天使用同事扩展jquery validate函数mobile验证时,require值传入false发现也会验证, 去掉mobile后就没这个问题,把mobile替换成自带的digits也没有这个问题 ...
- 如何在Windows Server 2003中配置FTP站点服务
前面写过一篇文章<怎样给你的网站注册一个好域名?> ,讲到“玉米”,笔者有很深的情节,也希望与大家交流“米事”,可以站内私信我或者直接回复文章. 有了好域名只是做网站的开始.我们还要买主机 ...
- 在应用程序中实现对NandFlash的操作
以TC58NVG2S3ETA00 为例: 下面是它的一些物理参数: 图一 图二 图三 图四 图五 图6-0 图6-1 说明一下,在图6-1中中间的那个布局表可以看做是实际的NandFlash一页数据的 ...
- 开发工具 之 PowerDesigner
PowerDesigner是一款功能非常强大的建模工具软件,足以与Rose比肩,同样是当今最著名的建模软件之一.Rose是专攻UML对象模型的建模工具,之后才向数据库建模发展,而PowerDesign ...
- WPF/Silverlight Layout 系统概述——Arrange(转)
Arrange过程概述 普通基类属性对Arrange过程的影响 我们知道Measure过程是在确定DesiredSize的大小,以便Arrange过程参考这个DesiredSize,确定给MyPane ...
- NSDate简单介绍
NSDate简单介绍 一:NSDate是一个日期\时间方面的类,主要用来创建\获取时间 1.NSDate对象的创建: date 创建一个当前系统日期和时间的对象 dateWithTimeInterva ...
- VMware系统运维(十六)部署虚拟化桌面 Horizon View Manager 5.2 配置池
1.点击"添加",打开添加池界面,选择"自动池",点击"下一步" 2.选择"专用,启动自动分配",点击"下一步 ...