mysql大頁配置

T1YSL發表於2021-05-18

1、HugePages簡介

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

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

再看2個術語:

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

TLB :cpu cache元件、快取部分page table以提高轉換速度


2、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所支援

以下簡單介紹其配置流程


(1) 配置前:

[root@cdio ~]# cat /proc/meminfo | grep -i huge

HugePages_Total:0

HugePages_Free: 0

HugePages_Rsvd: 0

Hugepagesize:2048 kB


(2) 設定大頁數量、每頁通常2M、20個就40M、系統要有足夠的記憶體待分配

[root@obe11g ~]# echo 20 > /proc/sys/vm/nr_hugepages


(3) 增加最大共享記憶體段的大小、本例12G

[root@obe11g ~]# echo 1560281088 > /proc/sys/kernel/shmmax


(4) 增加共享記憶體的大小、每頁4K

[root@obe11g ~]# echo 4194304 > /proc/sys/kernel/shmall


(5) 將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


(6) 再次確認配置情況

[root@obe11g ~]# cat /proc/meminfo | grep -i huge

HugePages_Total:    20

HugePages_Free:20

Hugepagesize:4096 kB


(7) 設定max locked memory

[root@obe11g ~]# cat /etc/security/limits.conf  | grep -i mysql

mysql    hard    memlock unlimited

mysql    soft    memlock unlimited


(8) 配置 my.cnf

[mysqld]

large-pages


(9) 啟動mysqld


(10) 觀察HugePages 使用情況

[root@obe11g ~]# grep -i huge /proc/meminfo

HugePages_Total:    20

HugePages_Free:16

Hugepagesize:4096 kB 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990629/viewspace-2772767/,如需轉載,請註明出處,否則將追究法律責任。

相關文章