• Linux HugePages及MySQL 大页配置


     
     
         ㈠ HugePages简介
         
            HugePages是kernel 2.6引入以便适应越来越大的物理内存
            在Linux下、page size默认是4K、如果使用HugePages、默认是2M
         
            再看2个术语:
            page table 映射表:物理内存和swap的对应关系、访问内存是先读page table、根据表里的映射关系操作
            TLB :cpu cache组件、缓存部分page table以提高转换速度
         
         
         
         ㈡ MySQL 配置大页   (要大于 innodb_buffer_pool_size+innodb_additional_mem_pool_size+innodb_log_buffer_size+tmp_table_size)
         
           好处
         
             ① 提高TLB的命中率
             ② 利用HugePages不会被Swap 的特性保证MySQL内存不会被交换到Swap中
           
           目前在MySQL中HugePages只被InnoDB所支持
           
           以下简单介绍其配置流程
           
           ⑴ 配置前:
    [root@cdio ~]# cat /proc/meminfo | grep -i huge
    HugePages_Total:     0
    HugePages_Free:      0
    HugePages_Rsvd:      0
    Hugepagesize:     2048 kB
           ⑵ 设置大页数量、每页通常2M、20个就40M、系统要有足够的内存待分配
    [root@obe11g ~]# echo 20 > /proc/sys/vm/nr_hugepages
           ⑶ 增加最大共享内存段的大小、本例12G
    [root@obe11g ~]# echo 1560281088 > /proc/sys/kernel/shmmax
           ⑷ 增加共享内存的大小、每页4K
    [root@obe11g ~]# echo 4194304 > /proc/sys/kernel/shmall
           ⑸ 将mysql用户所属组添加到系统内核中
    [root@obe11g ~]# more /proc/sys/vm/hugetlb_shm_group
    0
    [root@obe11g ~]# id mysql
    uid=501(mysql) gid=501(dba) groups=501(dba)
    [root@obe11g ~]# echo 501 > /proc/sys/vm/hugetlb_shm_group
           ⑹ 再次确认配置情况
    [root@obe11g ~]# cat /proc/meminfo | grep -i huge
    HugePages_Total:    20
    HugePages_Free:     20
    Hugepagesize:     4096 kB
           ⑺ 设置max locked memory
    [root@obe11g ~]# cat /etc/security/limits.conf  | grep -i mysql
    mysql            hard    memlock         unlimited
    mysql            soft    memlock         unlimited
           ⑻ 配置 my.cnf
    [mysqld]
    large-pages
           ⑼ 启动mysqld
         
           ⑽ 观察HugePages 使用情况
    [root@obe11g ~]# grep -i huge /proc/meminfo
    HugePages_Total:    20
    HugePages_Free:     16
    Hugepagesize:     4096 kB
     
  • 相关阅读:
    Tomcat性能调优
    spring 提供的可扩展的接口和类
    Spring boot 定义exit codes 让你定位问题更加简单
    spring中@Async注解的原理和使用
    SpringCache源码深度解析
    ApplicationContextAware和BeanFactoryAware使用理解
    spring aop中引介拦截器的用法
    提高安全性而在HTTP响应头中可以使用的各种响应头字段
    spring aop中targetSource的理解
    PowerMockito使用PowerMockIgnore注解消除类加载器引入的ClassCastException
  • 原文地址:https://www.cnblogs.com/DataArt/p/9975309.html
Copyright © 2020-2023  润新知