Linux HugePages及MySQL 大頁配置

來源:互聯網
上載者:User

 ㈠ HugePages簡介

HugePages是kernel 2.6引入以便適應越來越大的實體記憶體

在Linux下、page size預設是4K、如果使用HugePages、預設是2M

再看2個術語:

page table 映射表:實體記憶體和swap的對應關係、訪問記憶體是先讀page table、根據表裡的映射關係操作

TLB :cpu cache組件、緩衝部分page table以提高轉換速度

㈡ MySQL 配置大頁

好處

① 提高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

推薦閱讀:

Linux HugePages 配置 與 Oracle 效能關係說明

Linux 下 Hugepages的配置

Hugepages使用出現kswapd導致系統負載突然上升

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.