鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

大页内存配置

大页内存介绍

在页式虚拟存储器中,会把虚拟存储空间和物理主存空间都分割为一个个固定大小的页,为线程分配内存也是以页为单位。比如:页的大小为 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中动态配置大页内存,实现实时开关,整体步骤如下。

  1. 查看Linux默认的大页内存配置大小。openEuler有2MB、1GB两种大页内存配置,默认为2MB大页内存,若需要修改大页内存为1GB配置需重新编译OS内核,当前配置均以2MB大页内存进行示例。
    $ grep -i hugepagesize /proc/meminfo
    Hugepagesize:       2048 kB
  2. 查看 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
  3. (按需)开启大页内存
    # !/bin/bash
    for i in {0..31}  
    do
      # 开启2000个2MB的大页
      echo 2000 > /sys/devices/system/node/node$i/hugepages/hugepages-2048kB/nr_hugepages
    done
  4. 查看大页内存
    $ 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
  5. (按需)关闭大页内存
    # !/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