文档章节

Transparent Huge Pages相关概念及对mysql的影响

刘伟
 刘伟
发布于 2014/04/25 11:28
字数 721
阅读 1.2W
收藏 4

之前在弄tokudb的时候,在centos 6上面,需要执行 echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled关闭Transparent Huge Pages,当时未作深究,现在重新翻出来看看。

说Transparent Huge Pages之前,首先说说Huge Pages。

一般而言,内存管理的最小块级单位叫做page,一个page是4096bytes,1M的内存会有256个page,1GB的话就会有256,000个page。CPU通过内置的内存管理单元维护着page表记录。

正常来说,有两种方式来增加内存可以管理的内存大小:

1.增大硬件内存管理单元的大小。

2.增大page的大小。

第一个方法不是很现实,现代的硬件内存管理单元最多只支持数百到上千的page表记录,并且,对于数百万page表记录的维护算法必将与目前的数百条记录的维护算法大不相同才能保证性能,目前的解决办法是,如果一个程序所需内存page数量超过了内存管理单元的处理大小,操作系统会采用软件管理的内存管理单元,但这会使程序运行的速度变慢。

从redhat 6(centos,sl,ol)开始,操作系统开始支持 Huge Pages,也就是大页。

简单来说, Huge Pages就是大小为2M到1GB的内存page,主要用于管理数千兆的内存,比如1GB的page对于1TB的内存来说是相对比较合适的。

THP(Transparent Huge Pages)是一个使管理Huge Pages自动化的抽象层。

目前需要注意的是,由于实现方式问题,THP会造成内存锁影响性能,尤其是在程序不是专门为大内内存页开发的时候,简单介绍如下:

操作系统后台有一个叫做khugepaged的进程,它会一直扫描所有进程占用的内存,在可能的情况下会把4kpage交换为Huge Pages,在这个过程中,对于操作的内存的各种分配活动都需要各种内存锁,直接影响程序的内存访问性能,并且,这个过程对于应用是透明的,在应用层面不可控制,对于专门为4k page优化的程序来说,可能会造成随机的性能下降现象。

对于mysql的意义:

mysql有两个参数控制对于Huge Pages的使用。

large_page_size以及large_page,large_page_size没有意义,只是用于显示large_page占用的大小,large_page参数用于启用innodb的Huge Pages使用,并且支持linux的THP,可以避免THP运行对mysql进程的影响。

© 著作权归作者所有

下一篇: unix euid uid
刘伟
粉丝 21
博文 15
码字总数 22085
作品 0
海淀
数据库管理员
私信 提问
加载中

评论(1)

ajavaloser
ajavaloser
我在oracle官网的blog中看到说是因为THP是swappable的,而HP是不可交换的,所以没问题。没有说是不是因为合并时锁的问题
禁用、启用透明大页功能THP

ambari 安装Hortonworks HDP 时在检测host时异常。 The following hosts have Transparent Huge Pages (THP) enabled。THP should be disabled to avoid potential Hadoop performance issu......

J.J.REN
2016/03/10
49
0
Percona Toolkit 2.2.2 发布,MySQL 管理工具包

Percona Toolkit 2.2.20 发布了,Percona Toolkit 是一组高级的命令行工具,用来管理 MySQL 和系统任务,主要包括: 验证主节点和复制数据的一致性 有效的对记录行进行归档 找出重复的索引 ...

王练
2016/12/10
774
1
mongodb config replicat

1.WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'https://docs.mongodb.com/manual/tutorial/transparent-huge-pages/ 2.mongodb.config (replica) 3.php7 mongodb conf......

o0无忧亦无怖
2016/09/30
25
0
redis学习笔记1--安装、启动、关闭

// 下载 ming@ming-VirtualBox:~$ wget http://download.redis.io/releases/redis-3.0.7.tar.gz// 安装 ming@ming-VirtualBox:~$ tar zxvf redis-3.0.7.tar.gzroot@ming-VirtualBox:~# cd re......

旺旺的钥匙
2016/03/15
1.4K
0
用 docker-compose 加速构建 PHP 环境 - dkc

dkc 用 docker-compose 加速构建PHP环境. ----- dkc 在此作为 docker-compose 的缩写,你可以理解为 安装 docker From repository wget https://raw.githubusercontent.com/farwish/delicate......

ercom
2018/07/12
849
1

没有更多内容

加载失败,请刷新页面

加载更多

1核2G云服务哪家便宜?

前言: 又到一年续费时,我们来盘点哪些云厂商新手活动给力?有人说我又不是新手,有啥用?你要知道你作为家里唯一一位程序员,有强大的家庭后盾,比如爸爸妈妈爷爷奶奶叔叔阿姨......... 不过...

王念博客
2分钟前
32
0
JavaScript 箭头函数:适用与不适用场景

JavaScript 箭头函数:适用与不适用场景 现代 JavaScript 中最引人注目的功能之一是引入了箭头函数,用 => 来标识。 这种函数有两大优点 – 非常简洁的语法,和更直观的作用域和 this的绑定。...

王囧草
11分钟前
19
0
Docker快速入门

1 几个概念 Docker可以把开发的软件代码以及软件所依赖的所有运行时环境、依赖类库都打包成一个容器镜像,因此使用docker打包软件可以让程序员开发的程序运行在各种不同的计算机硬件环境中。...

即将秃头的Java程序员
12分钟前
40
0
Zookeeper-03-权限管理

Zookeeper-03-权限管理 用的不多,暂时先不整理了

moon888
14分钟前
23
0
渲染学习笔记——GPU应用阶段

1.GPU流水线 注:绿色可编程,橙色可控不可编程,红色完全不可控 2.顶点着色器 顶点着色器计算速度快于片元着色器,所以很多中间数据在顶点着色器计算。 3.裁剪 4.屏幕映射 5.三角形 6.片元着...

myctrd
20分钟前
39
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部