1

我下载并构建了 dpdk-stable-16.11.4 版本(使用 x86_64-native-linuxapp-gcc 目标)。我正在运行 Ubuntu 16.04.3 LTS。根据http://dpdk.org/doc/quick-starthttp://dpdk.org/doc/guides-16.04/linux_gsg/sys_reqs.html设置大页面后

mkdir -p /mnt/huge
mount -t hugetlbfs nodev /mnt/huge
echo 64 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages

我可以看到巨大的页面。

cat /proc/meminfo | grep Huge

    HugeAnonHugePages:    284672 kB
    ShmemHugePages:        0 kB
    HugePages_Total:      64
    HugePages_Free:       64
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       2048 kB

但是当我运行 helloWorld 示例时,它抱怨没有免费的大页面,见下文。

./build/helloworld -l 0-3 -n 2
EAL: Detected 4 lcore(s)
EAL: No free hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
hello from core 1
hello from core 2
hello from core 3
hello from core 0

此外,内存信息显示免费的大页面都消失了。

cat /proc/meminfo | grep Huge

    AnonHugePages:    380928 kB
    ShmemHugePages:        0 kB
    HugePages_Total:      64
    HugePages_Free:        0
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       2048 kB

知道为什么会这样吗?

4

1 回答 1

4

1. 1GB 巨页

该示例抱怨大约 1048576kB 巨页,即 1GB。这是正确的,您没有像我们在 /proc/meminfo 中看到的那样配置 1GB 页面

但是您不需要 1GB 页面来启动 DPDK 应用程序,因此它只是通知并继续。

2. 免费大页面

空闲的大页面全部消失了,因为如果我们不使用-mor--socket-mem选项指定 DPDK 应用程序使用的内存量,它将保留所有可用的大页面。

更多关于 DPDK入门指南的信息

如果即使应用程序结束(或崩溃),大页面仍然被分配,您可以通过删除 /mnt/huge 中的文件来手动释放大页面

于 2017-12-23T23:33:54.827 回答