在LINUX平台配置MSYQL支持大页内存

  操作系统:
  (root@oradb ~) #猫/etc/redhat-release
  Red Hat Enterprise Linux服务器6.4版(圣地亚哥)
  
  数据库:
  mysql>选择版本();
  + - - - - - - - - - - - - +
  ()| |版本
  + - - - - - - - - - - - - +
  | 5.6.27 ,,|
  + - - - - - - - - - - - - +
  1行集(0.00秒)
  
  在这个测试中我们设置400 mb的大页内存给MYSQL使用
  
  1. 关闭匿名大页内存
  
  下面的命令输出为(总),表示开启匿名大页内存,需要关闭
  (root@oradb ~) #猫/sys/kernel/mm/transparent_hugepage/启用
  (总是)从未
  
  在,/boot/grub/grub.conf 文件中添加transparent_hugepage=没有禁止匿名大页内存
  
  默认=0
  超时=5
  splashimage=(hd0, 0)/grub/splash.xpm。广州
  hiddenmenu
  标题Red Hat Enterprise Linux (2.6.32-358.el6.x86_64)
  ,,,,,,根(hd0, 0)
  ,,,,,,358./vmlinuz - 2.6.32内核——el6。根=UUID=bfd79be7 x86_64 ro - 6446 - 4864 - bc1f ad15d4b242ad rd_NO_LUKS rd_NO_LVM LANG=en_US。utf - 8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto pc KEYTABLE KEYBOARDTYPE==我们rd_NO_DM rhgb quiet transparent_hugepage=从未
  ,,,,,,initrd/initramfs el6.x86_64——2.6.32 - 358.。img
  ,,,,,,
  ,,,,,,
  重启操作系统,然后检查是否禁止了匿名大页
  
  (root@oradb ~) #猫/sys/kernel/mm/transparent_hugepage/启用
  永远(永远),,#已经成功禁止匿名大页内存
  
  
  (root@oradb ~) #猫/proc/meminfo | grep - i巨大
  AnonHugePages:,,,,,,,,0 kB # AnonHugePages为零,表示已经成功禁止了匿名大页内存
  HugePages_Total:,,,,,,0
  HugePages_Free:,,,,,,,0
  HugePages_Rsvd:,,,,,,,0
  HugePages_Surp:,,,,,,,0
  Hugepagesize:,,,,,,2048 kB #大页内存的页面大小是2 mb
  
  
  2. 在内核参数中配置400 mb的大页内存
  # vi /etc/sysctl.参看
  #配置hugepages
  # vm。nr_hugepages=MYSQL需要使用的内存/大页的页面大?400/2=200
  vm。nr_hugepages=200
  vm。hugetlb_shm_group=507 # 507是MYSQL所属组ID
  
  (root@oradb ~) # sysctl - | grep shmmax
  内核。shmmax=68719476736
  (root@oradb ~) # sysctl - | grep shmall
  内核。shmall=4294967296
  
  操作系统默认已经设置kernel.shmmax=64 gb,内核。shmall=4 gb,已经超过我们
  需要的内存量(400 mb)所以不需要调整这两个参数。
  
  3.重新加LINUX载内核参数
  sysctl - p
  
  4. 设置MYSQL用户限制内存锁定400 mb
  vi/etc/security/limits.参看
  mysql ,,,,soft ,,memlock ,409600号单位为KB,我们配置的是MYSQL用户限制内存锁定400 mb
  mysql ,,,,hard ,memlock ,,409600年
  
  5. 配置MYSQL启用大页内存
  (mysqld)
  大内存页
  
  6. 启动MYSQL
/app/oracle/oradata2/mysql-5.6.27/bin/mysqld_safe——defaults-file=/app/oracle/oradata2——用户=mysql/mysql-5.6.27/my . cnf中所做,
  
  检查已经使用了大页内存
  [root@oradb mysql-5.6.27] #猫/proc/meminfo | grep - i巨大
  AnonHugePages:,,,,,,,,0 kB
  HugePages_Total:,,,,200年
  HugePages_Free:,,,,,197年
  HugePages_Rsvd:,,,,,,67年
  HugePages_Surp:,,,,,,,0
  Hugepagesize:,,,,,,2048 kB
  
  HugePages_Total为所分配的页面数目,和Hugepagesize相乘后得到所分配的内存大小.200 * 2/1024大约为200 mb。
  
  HugePages_Free为从来没有被使用过的Hugepages数目。即使MYSQL INNDOB缓冲池已经分配了这部分内存,但是如果没有实际写入,
  那么看到的还是免费的。这是很容易误解的地方。
  
  HugePages_Rsvd为已经被分配预留但是还没有使用的页面数目。在MYSQL刚刚启动时,大部分内存应该都是保留并且免费的,随着
  INNDOB缓冲池的使用,保留和自由都会不断的降低。
  
  HugePages_Free——HugePages_Rsvd这部分是没有被使用到的内存,如果没有其他的MYSQL实例,这部分内存也许永远都不会被使用的到,也就是被浪费了。
  在这个测试中没有使用的大页内存是197 - 67=130 * 2=260 mb。

在LINUX平台配置MSYQL支持大页内存