Hugepages 是從 Linux kernal 2.6 後加入的新功能
default 是 2048 kB (2MB)
查詢目前 page size (Bytes)
$ getconf PAGE_SIZE 或 getconf PAGESIZE
4096
$ cat /proc/sys/vm/nr_hugepages
0
$ cat /proc/meminfo | grep Huge
AnonHugePages: 10047488 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
尚未啟用 HugePages
If this commands returns a non-empty string, 2MB pages are supported.
% grep pse /proc/cpuinfo | uniq
flags : [...] pse [...]
If this commands returns a non-empty string, 1GB pages are supported.
% grep pdpe1gb /proc/cpuinfo | uniq
flags : [...] pdpe1gb [...]
啟用 HugePages: (以 root 身份執行)
$ sysctl -w vm.nr_hugepages=512
vm.nr_hugepages = 512
或是
$ echo 512 > /proc/sys/vm/nr_hugepages
特別注意:
必需有「連續的空白記憶體」才能生效
若是運作了一些時日的 linux 主機,記憶體通常是「破碎/不連續」的狀態
所以建議是在剛開機時,執行這個命令才會有效
檢查 HugePage 是否設定成功:
$ cat /proc/sys/vm/nr_hugepages
512
或
$ cat /proc/meminfo | grep Huge
AnonHugePages: 288768 kB
HugePages_Total: 512 系統已經預留多少個 HugePages
HugePages_Free: 512 現在還有多少 HugePages 未分配(allocate)
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB 每一個 HuagePage 的大小
這幾個值的說明,參考:Linux下hugetlbpage使用详解
HugePages_Rsvd 是什么意思?
讓機器開機時,能自動啟用這個設定:
$ vi /etc/sysctl.conf
加入 vm.nr_hugepages=512
參考
让你的PHP7更快之Hugepage | 风雪之隅
Hugepages详解
Hugepages - Debian Wiki
Huge Pages and Transparent Huge Pages - Red Hat Customer Portal
Configuring Huge Pages for MySQL Server on Red Hat Linux
Huge Page 是否是拯救性能的万能良药?
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_tuning_and_optimization_guide/sect-virtualization_tuning_optimization_guide-memory-tuning
https://www.golinuxcloud.com/disable-transparent-hugepages-centos-rhel-7/
https://blog.51cto.com/hsbxxl/1075166
RedHat 7 效能微調指南 / 4.3.1. 設定巨大分頁