大页内存配置
大页内存介绍
在页式虚拟存储器中,会把虚拟存储空间和物理主存空间都分割为一个个固定大小的页,为线程分配内存也是以页为单位。比如:页的大小为 4K,那么 4GB 存储空间就需要 4GB/4KB=1M 条记录,即有 100 多万个 4KB 的页。如果页太小了,那么就会产生大量的页表条目,降低了查询速度的同时还浪费了存放页表的主存空间;但如果页太大了,又会容易造成浪费,原因就跟段式存储管理方式一般。所以 Linux 操作系统默认的页大小就是 4KB,可以通过指令查看:
$ getconf PAGE_SIZE 4096
但在某些对性能要求非常苛刻的场景中,页面会被设置得非常的大,比如:2MB、1GB、甚至几十 GB,这些页被称之为 “大页”(Huge Page)。大页能够提升性能的主要原因有以下几点:
- 减少页表条目,加快检索速度。
- 提升 TLB 快表的命中率,TLB 一般拥有 16 ~ 128 个条目空间,也就是说当大页为 1GB 的时候,TLB 能够对应 16GB ~ 128GB 之间的存储空间。
大页内存配置步骤
大页内存配置需要连续的内存空间,可以在Linux中动态配置大页内存,实现实时开关,整体步骤如下。
- 查看Linux默认的大页内存配置大小。openEuler有2MB、1GB两种大页内存配置,默认为2MB大页内存,若需要修改大页内存为1GB配置需重新编译OS内核,当前配置均以2MB大页内存进行示例。
$ grep -i hugepagesize /proc/meminfo Hugepagesize: 2048 kB
- 查看 Linux 操作系统是否启动了大页内存,如果 HugePages_Total 为 0,意味着 Linux 没有设置或没有启用 Huge pages。
当前鲲鹏920专业版上每个节点共2个CPU,每个CPU有8个NUMA,共16个NUMA。每个NUMA有32GB DDR内存和4GB 片上内存,可通过numastat -m命令查看节点信息,可以看到Node 0-15即为NUMA的DDR内存情况,Node 16-31为NUMA的片上内存情况。各Node下“HugePages_Total”为大页内存大小,可以看到均为0。
Node 0 Node 1 Node 2 Node 3 --------------- --------------- --------------- --------------- MemTotal 31376.38 32250.62 32250.62 32250.62 MemFree 26903.30 27613.54 31664.97 31624.89 MemUsed 4473.07 4637.07 585.65 625.73 Active 137.05 120.04 6.26 6.46 Inactive 2128.45 2102.39 15.93 71.89 Active(anon) 137.05 119.78 6.25 6.39 Inactive(anon) 2127.74 2101.00 14.87 70.76 Active(file) 0.00 0.27 0.01 0.06 Inactive(file) 0.71 1.39 1.07 1.14 Unevictable 0.00 0.00 0.00 0.00 Mlocked 0.00 0.00 0.00 0.00 Dirty 0.00 0.00 0.00 0.00 Writeback 0.00 0.29 0.15 0.38 FilePages 2203.80 2185.45 9.27 9.66 Mapped 357.91 293.75 239.99 211.84 AnonPages 61.55 37.23 11.53 67.19 Shmem 2202.66 2183.79 8.20 8.46 KernelStack 17.89 5.08 4.95 5.38 PageTables 0.25 0.80 0.00 0.46 NFS_Unstable 0.00 0.00 0.00 0.00 Bounce 0.00 0.00 0.00 0.00 WritebackTmp 0.00 0.00 0.00 0.00 Slab 563.59 1289.68 39.69 51.61 SReclaimable 3.46 7.61 6.14 9.29 SUnreclaim 560.13 1282.07 33.55 42.32 AnonHugePages 0.00 156.00 20.00 248.00 ShmemHugePages 0.00 0.00 0.00 0.00 ShmemPmdMapped 0.00 0.00 0.00 0.00 HugePages_Total 0.00 0.00 0.00 0.00 HugePages_Free 0.00 0.00 0.00 0.00 HugePages_Surp 0.00 0.00 0.00 0.00 KReclaimable 3.46 7.61 6.14 9.29 Node 4 Node 5 Node 6 Node 7 --------------- --------------- --------------- --------------- MemTotal 32250.62 32210.39 32250.62 32250.62 MemFree 30809.31 30867.68 31423.40 31688.95 MemUsed 1441.31 1342.71 827.22 561.67 Active 0.23 21.23 5.96 8.18 Inactive 209.67 58.32 283.64 29.11 Active(anon) 0.19 21.17 5.90 8.14 Inactive(anon) 208.55 57.32 282.69 28.15 Active(file) 0.04 0.06 0.07 0.04 Inactive(file) 1.12 1.00 0.95 0.96 Unevictable 0.00 0.00 0.00 0.00 Mlocked 0.00 0.00 0.00 0.00 Dirty 0.00 0.00 0.00 0.02 Writeback 0.25 0.26 0.30 0.21 FilePages 17.96 33.87 25.84 18.15 Mapped 191.35 183.80 178.56 177.34 AnonPages 190.69 45.21 263.00 18.06 Shmem 16.80 32.81 24.82 17.15 KernelStack 5.17 5.08 5.64 5.12 PageTables 1.23 1.21 0.93 0.25 NFS_Unstable 0.00 0.00 0.00 0.00 Bounce 0.00 0.00 0.00 0.00 WritebackTmp 0.00 0.00 0.00 0.00 Slab 148.17 80.93 73.87 62.04 SReclaimable 5.58 4.76 6.00 11.26 SUnreclaim 142.59 76.17 67.87 50.79 AnonHugePages 210.00 78.00 342.00 98.00 ShmemHugePages 0.00 0.00 0.00 0.00 ShmemPmdMapped 0.00 0.00 0.00 0.00 HugePages_Total 0.00 0.00 0.00 0.00 HugePages_Free 0.00 0.00 0.00 0.00 HugePages_Surp 0.00 0.00 0.00 0.00 KReclaimable 5.58 4.76 6.00 11.26 Node 8 Node 9 Node 10 Node 11 --------------- --------------- --------------- --------------- MemTotal 32250.61 32250.62 32250.62 32250.62 MemFree 30554.16 30546.63 31566.47 31264.79 MemUsed 1696.45 1703.98 684.15 985.83 Active 9.40 6.99 0.42 6.73 Inactive 359.70 527.84 125.91 367.22 Active(anon) 9.39 6.65 0.37 6.73 Inactive(anon) 358.64 526.30 125.13 365.98 Active(file) 0.01 0.34 0.05 0.00 Inactive(file) 1.05 1.54 0.77 1.24 Unevictable 128.20 0.00 0.00 0.00 Mlocked 128.20 0.00 0.00 0.00 Dirty 0.06 0.04 0.03 0.05 Writeback 0.29 0.36 0.28 0.19 FilePages 147.79 18.88 9.57 10.35 Mapped 305.11 182.24 184.70 176.91 AnonPages 348.76 515.71 116.45 363.04 Shmem 146.72 17.00 8.75 9.12 KernelStack 6.77 5.41 5.33 5.19 PageTables 6.17 1.73 3.60 2.00 NFS_Unstable 0.00 0.00 0.00 0.00 Bounce 0.00 0.00 0.00 0.00 WritebackTmp 0.00 0.00 0.00 0.00 Slab 100.66 83.42 63.84 86.38 SReclaimable 25.38 4.62 22.92 9.68 SUnreclaim 75.29 78.80 40.92 76.70 AnonHugePages 410.00 560.00 144.00 410.00 ShmemHugePages 0.00 0.00 0.00 0.00 ShmemPmdMapped 0.00 0.00 0.00 0.00 HugePages_Total 0.00 0.00 0.00 0.00 HugePages_Free 0.00 0.00 0.00 0.00 HugePages_Surp 0.00 0.00 0.00 0.00 KReclaimable 25.38 4.62 22.92 9.68 Node 12 Node 13 Node 14 Node 15 --------------- --------------- --------------- --------------- MemTotal 32250.62 32250.62 32250.62 30179.75 MemFree 30863.32 30963.23 31599.11 29531.15 MemUsed 1387.30 1287.39 651.52 648.60 Active 6.79 7.43 12.35 7.95 Inactive 38.09 45.40 60.16 47.18 Active(anon) 6.77 7.11 12.28 7.95 Inactive(anon) 36.94 43.83 59.34 46.32 Active(file) 0.02 0.32 0.07 0.00 Inactive(file) 1.16 1.57 0.82 0.86 Unevictable 0.00 0.00 0.00 0.00 Mlocked 0.00 0.00 0.00 0.00 Dirty 0.00 0.00 0.00 0.02 Writeback 0.23 0.35 0.34 0.31 FilePages 10.06 10.65 17.72 25.83 Mapped 176.81 240.05 212.42 247.54 AnonPages 35.00 42.22 54.98 29.63 Shmem 8.88 8.76 16.82 24.98 KernelStack 5.31 5.12 5.47 5.30 PageTables 0.36 0.71 2.25 1.03 NFS_Unstable 0.00 0.00 0.00 0.00 Bounce 0.00 0.00 0.00 0.00 WritebackTmp 0.00 0.00 0.00 0.00 Slab 252.21 89.21 71.03 61.48 SReclaimable 54.05 6.79 5.46 5.77 SUnreclaim 198.17 82.42 65.57 55.70 AnonHugePages 84.00 84.00 108.00 96.00 ShmemHugePages 0.00 0.00 0.00 0.00 ShmemPmdMapped 0.00 0.00 0.00 0.00 HugePages_Total 0.00 0.00 0.00 0.00 HugePages_Free 0.00 0.00 0.00 0.00 HugePages_Surp 0.00 0.00 0.00 0.00 KReclaimable 54.05 6.79 5.46 5.77 Node 16 Node 17 Node 18 Node 19 --------------- --------------- --------------- --------------- MemTotal 4096.00 4096.00 4096.00 4096.00 MemFree 4096.00 4096.00 4096.00 4096.00 MemUsed 0.00 0.00 0.00 0.00 Active 0.00 0.00 0.00 0.00 Inactive 0.00 0.00 0.00 0.00 Active(anon) 0.00 0.00 0.00 0.00 Inactive(anon) 0.00 0.00 0.00 0.00 Active(file) 0.00 0.00 0.00 0.00 Inactive(file) 0.00 0.00 0.00 0.00 Unevictable 0.00 0.00 0.00 0.00 Mlocked 0.00 0.00 0.00 0.00 Dirty 0.00 0.00 0.00 0.00 Writeback 0.00 0.00 0.00 0.00 FilePages 0.00 0.00 0.00 0.00 Mapped 0.00 0.00 0.00 0.00 AnonPages 0.00 0.00 0.00 0.00 Shmem 0.00 0.00 0.00 0.00 KernelStack 0.00 0.00 0.00 0.00 PageTables 0.00 0.00 0.00 0.00 NFS_Unstable 0.00 0.00 0.00 0.00 Bounce 0.00 0.00 0.00 0.00 WritebackTmp 0.00 0.00 0.00 0.00 Slab 0.00 0.00 0.00 0.00 SReclaimable 0.00 0.00 0.00 0.00 SUnreclaim 0.00 0.00 0.00 0.00 AnonHugePages 0.00 0.00 0.00 0.00 ShmemHugePages 0.00 0.00 0.00 0.00 ShmemPmdMapped 0.00 0.00 0.00 0.00 HugePages_Total 0.00 0.00 0.00 0.00 HugePages_Free 0.00 0.00 0.00 0.00 HugePages_Surp 0.00 0.00 0.00 0.00 KReclaimable 0.00 0.00 0.00 0.00 Node 20 Node 21 Node 22 Node 23 --------------- --------------- --------------- --------------- MemTotal 4096.00 4096.00 4096.00 4096.00 MemFree 4096.00 4096.00 4096.00 4096.00 MemUsed 0.00 0.00 0.00 0.00 Active 0.00 0.00 0.00 0.00 Inactive 0.00 0.00 0.00 0.00 Active(anon) 0.00 0.00 0.00 0.00 Inactive(anon) 0.00 0.00 0.00 0.00 Active(file) 0.00 0.00 0.00 0.00 Inactive(file) 0.00 0.00 0.00 0.00 Unevictable 0.00 0.00 0.00 0.00 Mlocked 0.00 0.00 0.00 0.00 Dirty 0.00 0.00 0.00 0.00 Writeback 0.00 0.00 0.00 0.00 FilePages 0.00 0.00 0.00 0.00 Mapped 0.00 0.00 0.00 0.00 AnonPages 0.00 0.00 0.00 0.00 Shmem 0.00 0.00 0.00 0.00 KernelStack 0.00 0.00 0.00 0.00 PageTables 0.00 0.00 0.00 0.00 NFS_Unstable 0.00 0.00 0.00 0.00 Bounce 0.00 0.00 0.00 0.00 WritebackTmp 0.00 0.00 0.00 0.00 Slab 0.00 0.00 0.00 0.00 SReclaimable 0.00 0.00 0.00 0.00 SUnreclaim 0.00 0.00 0.00 0.00 AnonHugePages 0.00 0.00 0.00 0.00 ShmemHugePages 0.00 0.00 0.00 0.00 ShmemPmdMapped 0.00 0.00 0.00 0.00 HugePages_Total 0.00 0.00 0.00 0.00 HugePages_Free 0.00 0.00 0.00 0.00 HugePages_Surp 0.00 0.00 0.00 0.00 KReclaimable 0.00 0.00 0.00 0.00 Node 24 Node 25 Node 26 Node 27 --------------- --------------- --------------- --------------- MemTotal 4096.00 4096.00 4096.00 4096.00 MemFree 4096.00 4096.00 4096.00 4096.00 MemUsed 0.00 0.00 0.00 0.00 Active 0.00 0.00 0.00 0.00 Inactive 0.00 0.00 0.00 0.00 Active(anon) 0.00 0.00 0.00 0.00 Inactive(anon) 0.00 0.00 0.00 0.00 Active(file) 0.00 0.00 0.00 0.00 Inactive(file) 0.00 0.00 0.00 0.00 Unevictable 0.00 0.00 0.00 0.00 Mlocked 0.00 0.00 0.00 0.00 Dirty 0.00 0.00 0.00 0.00 Writeback 0.00 0.00 0.00 0.00 FilePages 0.00 0.00 0.00 0.00 Mapped 0.00 0.00 0.00 0.00 AnonPages 0.00 0.00 0.00 0.00 Shmem 0.00 0.00 0.00 0.00 KernelStack 0.00 0.00 0.00 0.00 PageTables 0.00 0.00 0.00 0.00 NFS_Unstable 0.00 0.00 0.00 0.00 Bounce 0.00 0.00 0.00 0.00 WritebackTmp 0.00 0.00 0.00 0.00 Slab 0.00 0.00 0.00 0.00 SReclaimable 0.00 0.00 0.00 0.00 SUnreclaim 0.00 0.00 0.00 0.00 AnonHugePages 0.00 0.00 0.00 0.00 ShmemHugePages 0.00 0.00 0.00 0.00 ShmemPmdMapped 0.00 0.00 0.00 0.00 HugePages_Total 0.00 0.00 0.00 0.00 HugePages_Free 0.00 0.00 0.00 0.00 HugePages_Surp 0.00 0.00 0.00 0.00 KReclaimable 0.00 0.00 0.00 0.00 Node 28 Node 29 Node 30 Node 31 --------------- --------------- --------------- --------------- MemTotal 4096.00 4096.00 4096.00 4096.00 MemFree 4096.00 4096.00 4096.00 4096.00 MemUsed 0.00 0.00 0.00 0.00 Active 0.00 0.00 0.00 0.00 Inactive 0.00 0.00 0.00 0.00 Active(anon) 0.00 0.00 0.00 0.00 Inactive(anon) 0.00 0.00 0.00 0.00 Active(file) 0.00 0.00 0.00 0.00 Inactive(file) 0.00 0.00 0.00 0.00 Unevictable 0.00 0.00 0.00 0.00 Mlocked 0.00 0.00 0.00 0.00 Dirty 0.00 0.00 0.00 0.00 Writeback 0.00 0.00 0.00 0.00 FilePages 0.00 0.00 0.00 0.00 Mapped 0.00 0.00 0.00 0.00 AnonPages 0.00 0.00 0.00 0.00 Shmem 0.00 0.00 0.00 0.00 KernelStack 0.00 0.00 0.00 0.00 PageTables 0.00 0.00 0.00 0.00 NFS_Unstable 0.00 0.00 0.00 0.00 Bounce 0.00 0.00 0.00 0.00 WritebackTmp 0.00 0.00 0.00 0.00 Slab 0.00 0.00 0.00 0.00 SReclaimable 0.00 0.00 0.00 0.00 SUnreclaim 0.00 0.00 0.00 0.00 AnonHugePages 0.00 0.00 0.00 0.00 ShmemHugePages 0.00 0.00 0.00 0.00 ShmemPmdMapped 0.00 0.00 0.00 0.00 HugePages_Total 0.00 0.00 0.00 0.00 HugePages_Free 0.00 0.00 0.00 0.00 HugePages_Surp 0.00 0.00 0.00 0.00 KReclaimable 0.00 0.00 0.00 0.00 Total --------------- MemTotal 578560.55 MemFree 555020.91 MemUsed 23539.65 Active 363.48 Inactive 6470.92 Active(anon) 362.12 Inactive(anon) 6453.55 Active(file) 1.35 Inactive(file) 17.36 Unevictable 128.20 Mlocked 128.20 Dirty 0.21 Writeback 4.21 FilePages 4754.86 Mapped 3560.32 AnonPages 2200.26 Shmem 4735.73 KernelStack 98.20 PageTables 22.99 NFS_Unstable 0.00 Bounce 0.00 WritebackTmp 0.00 Slab 3117.82 SReclaimable 188.76 SUnreclaim 2929.06 AnonHugePages 3048.00 ShmemHugePages 0.00 ShmemPmdMapped 0.00 HugePages_Total 0.00 HugePages_Free 0.00 HugePages_Surp 0.00 KReclaimable 188.76 - (按需)开启大页内存
# !/bin/bash for i in {0..31} do # 开启2000个2MB的大页 echo 2000 > /sys/devices/system/node/node$i/hugepages/hugepages-2048kB/nr_hugepages done - 查看大页内存
$ numastat -m | grep HugePages_Total HugePages_Total 0.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 4000.00 124000.00
- (按需)关闭大页内存
# !/bin/bash for i in {0..31} do echo 0 > /sys/devices/system/node/node$i/hugepages/hugepages-2048kB/nr_hugepages done # 关闭后查看大页内存情况 $ numastat -m | grep HugePages_Total HugePages_Total 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
父主题: 鲲鹏920专业版配置