【问题标题】:Hugepages exist, but are not free nor reserved. Or, how do I free hugepages?大页面存在,但不是免费的,也不是保留的。或者,我如何释放大页面?
【发布时间】:2016-10-04 05:53:45
【问题描述】:

我正在运行一个 SPDK 实验(它使用 DPDK,而 DPDK 又使用大页面)并且它昨天还在工作。我在共享环境中运行它们(我认为还有一两个人将这台机器用于其他东西)。现在,每当我尝试运行它时,都会出现 no free hugepages 错误。

/proc/meminfo 的输出是:

HugePages_Total:    1024
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

挂载输出:

cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb,release_agent=/run/cgmanager/agents/cgm-release-agent.hugetlb)

在我上一个环境中有效的东西不再有效:

umount -a -t hugetlbfs
mount -t hugetlbfs nodev /mnt/huge

那么/proc/meminfo的输出就是

HugePages_Total:    1024
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:     1024

但如果我尝试运行它:

EAL: No free hugepages reported in hugepages-1048576kB
EAL: No free hugepages reported in hugepages-2048kB
PANIC in rte_eal_init():
Cannot get hugepage information

为什么这些页面是多余的而不是免费的?有什么办法可以释放他们吗?我想重新启动系统,因为可能有其他作业正在运行或有人在使用它。

编辑: 重新启动机器,分配更多的大页面并且它们是空闲的。执行了测试,它崩溃了,现在大页面又丢失了。

没有有效答案的相关问题(至少对我而言):

How to release hugepages from the crashed application

How to really free hugepages in Linux for use by a new process?

【问题讨论】:

    标签: dpdk huge-pages


    【解决方案1】:

    如果你按照下面的说明,你可以摆脱分配的hugepages:

    1) 让我们检查一下重启时空闲的大页面

    dpdk@dpdkvm:~$ ls /mnt/huge/
    empty
    
    dpdk@dpdkvm:~/dpdk-1.8.0/examples/kni$ cat /proc/meminfo
    ...
    HugePages_Total:     256
    HugePages_Free:      256
    ...
    

    2) 使用错误的参数启动 dpdk 应用程序,产生错误

    dpdk@dpdkvm:~/dpdk-1.8.0/examples/kni$ sudo ./build/kni -c 0x03 -n 2 -- -P -p 0x03 --config="(0,0,1),(1,0,1)"
    ...
    EAL: Error - exiting with code: 1
      Cause: No supported Ethernet device found
    

    3)当我检查大页面时,没有任何免费的

    dpdk@dpdkvm:~/dpdk-1.8.0/examples/kni$ cat /proc/meminfo
    ...
    HugePages_Total:     256
    HugePages_Free:        0
    ...
    

    4) 现在,当我检查挂载的 hugepage 目录时,我可以看到 dpdk 应用程序没有返回给操作系统的文件。

    dpdk@dpdkvm:~/dpdk-1.8.0/examples/kni$ ls /mnt/huge/
    ...
    rtemap_0    rtemap_137  rtemap_176  rtemap_214  rtemap_253  rtemap_62
    ...
    

    5) 最后,如果你删除以 rtemap 开头的文件,你可以将大页面归还

    dpdk@dpdkvm:~/dpdk-1.8.0/examples/kni$ sudo rm /mnt/huge/*
    [sudo] password for dpdk:
    dpdk@dpdkvm:~/dpdk-1.8.0/examples/kni$ cat /proc/meminfo
    ...
    HugePages_Total:     256
    HugePages_Free:      256
    ...
    

    【讨论】:

    • 我不知道为什么我不再遇到这个问题,但我记得大页面的挂载点是空的,那里没有文件。如果再次出现,我会试试这个,谢谢!
    • 其实也有挂载的目录是空的,但是没有空闲的hugepages的情况。卸载和安装它再次工作了几次,现在它不再起作用了,我不知道为什么。
    • 空载也有这个问题。我认为这与非 mmap 巨页分配有关
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多