• hugepage优势


    hugepage的优势与使用

    +2投票
     

    优势

    通过使用hugepage分配可以提高性能,因为需要更少的页,因此需要更少Translation Lookaside Buffers (TLB,高速传送缓存),使用TLB可以减少将虚拟页地址转换成物理页地址的时间。

    如果没有hugepage,使用标准4K页大小的话,可能产生大量TLB miss,影响性能。

    使用

    hugepage的分配应该在启动时完成,或者在系统启动之后尽可能在将内存分片成物理内存之前。

    要在启动时保留hugepage内存,需要在内核启动的命令行添加一条命令。

    对于2MB的页,只需要将选项hugepages传递给内核。例如,要保留1024个2MB的页,可用以下命令:

        hugepages=1024

    对于其它大小的hugepage尺寸,如1G的页,需要明确指定该尺寸,或者将该尺寸指定为默认hugepage的大小。

    例如,要保留4个1G大小的页,需要用以下命令:

        default_hugepagesz=1G hugepagesz=1G hugepages=4

    注意:

    (1)CPU支持的hugepage大小可以通过CPU的flags得知:

    如果pse存在,则支持2M的hugepage。

    如果pdpe1gb,则支持1G的hugepage。

    (2)对于64位系统,如果平台支持,建议使用1GB大小的hugepage。

    对于包含两个CPU槽位的NUMA系统,启动时保留的hugepage数会平均分配给两个槽。

    (假设两个槽位均有足够内存)

    另外,对于2MB大小的页,还有一个方法可以在系统启动之后分配hugepages。

    对于单节点的系统(以分配1024个页为例):

    $ echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

    对于NUMA系统,可以对每个节点分配配置

    $ echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages

    $ echo 1024 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages

    但是对于1G的页,无法在系统启动之后再分配保留的hugepage内存,需要按上文所述方法在启动项后指定。

    结合DPDK使用hugepages

    hugepage内存分配好后,要使其对DPDK可用,需要执行以下操作:

    # mkdir /mnt/huge

    # mount -t hugetlbfs nodev /mnt/huge

    也可以在/etc/fstab文件中添加以下命令,使其重启后有效:

    nodev /mnt/huge hugetlbfs defaults 0 0

    对于1G的页,页大小必须作为mount选项指定:

    nodev /mnt/huge_1GB hugetlbfs pagesize=1GB 0 0

     
  • 相关阅读:
    fixed 和 fixed
    SVN命令概要
    项目目录的划分
    作用域(scope), 定义空间(declaration space) 和 生存期(lifetime)
    可伸缩性最佳实践:来自eBay的经验(转)
    TCP连接可用性检测
    面向对象设计
    如何截取Http请求
    eBay架构
    .net3.5下的Socket通信框架
  • 原文地址:https://www.cnblogs.com/zafu/p/9265629.html
Copyright © 2020-2023  润新知