• [development][dpdk][hugepage] 为不同的结点分配不同大小的大页内存


    这个事来自dpdk, 所以, 先参考.

    http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html

    当前, 假设你已经读过上边内容, 知道大页内存时候, dpdk是什么,以及怎样使用.

    我们已经知道, 为系统分配大页内存有两种大小:

    2M 和 1G 

    1G的只有64位系统支持, 并且我们推荐64位的操作系统尽量使用1G的page

    同时, 我们还知道配置大页内存,有两个时机

    boot time 和 run time

    boot time的配置写在grub里,给内核.

    run time的配置方式, 类似如下:

    # 不是 numa 的
    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的必须在boot time分配, 而且,就算是2M的也应该在开机之后尽快分配, 因为申请的大页需要连续空间, 如果不连续, 申请将失败.

    那么, boot time是申请1G大页的内核参数如下:

    default_hugepagesz=1G hugepagesz=1G hugepages=4

    上面的例子, 申请了4G的大页, 如果是numa的话, 这4G会被平分给两个node, 每个node, 2G

    而接下的问题是: 在实际生产生活中我们并不想这样用. 比如,我只想在node0上申请4G的大页, 而不想在node1上申请大页.

    这时候, 一个人在intel问了这个问题, 然后intel的人很不负责人的回答了(我只是为了吐槽)

    https://embedded.communities.intel.com/thread/6681

    真正的解决方案在这里:

    https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/performance_tuning_guide/sect-red_hat_enterprise_linux-performance_tuning_guide-memory-configuring-huge-pages

    简单的来说就是

    1. 先用这样的参数

    default_hugepagesz=1G hugepagesz=1G

    2. 在用下面的命令, 给不同的node配置不同的页数

    echo $1 > $nodes_path/$2/hugepages/hugepages-1048576kB/nr_hugepages

    另外如果知道,支不支持1G的大页?

    2M, 查看CPU的 psr 标记

    [root@dpdk ~]# cat /proc/cpuinfo |grep pse

    1G, 查看CPU的 pdpe1gb  标记

    [root@dpdk ~]# cat /proc/cpuinfo |grep pdpe1gb

    另外的另外, 我的QEMU不支持怎么办?

    首先查看支不支持,

    qemu-system-x86_64 -cpu help

    然后, 启动的时候在CPU类型后面加一个参数:

    qemu-system-x86_64 -cpu Nehalem,pdpe1gb

    参考: 

    [daily][qemu][kvm] qemu增加减少CPUID

  • 相关阅读:
    Redis概述
    容器化VS微服务
    HTTP协议
    Java传参都是传引用变量的副本
    短连接、长连接和短轮询、长轮询
    Netty 5 获取客户端IP(非HTTP)
    Linux上从Java程序中调用C函数
    【转载】Log4j详细使用教程
    【转载】Windows下VSCode编译调试c/c++
    SpringCloud与Seata分布式事务初体验
  • 原文地址:https://www.cnblogs.com/hugetong/p/7772186.html
Copyright © 2020-2023  润新知