首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >赫格普是存在的,但既不是免费的,也不是保留的。或者,我怎样才能自由拥抱?

赫格普是存在的,但既不是免费的,也不是保留的。或者,我怎样才能自由拥抱?
EN

Stack Overflow用户
提问于 2016-10-04 05:53:45
回答 1查看 11.7K关注 0票数 6

我正在运行一个SPDK实验(它使用的是DPDK,而DPDK又使用了拥抱),它昨天就开始工作了。我在一个共享的环境中运行它们(我认为有一两个人使用这台机器做其他的事情)。现在,每当我尝试运行它时,我都会得到一个不自由的拥抱错误。

/proc/meminfo的输出是:

代码语言:javascript
复制
HugePages_Total:    1024
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

坐骑输出:

代码语言:javascript
复制
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb,release_agent=/run/cgmanager/agents/cgm-release-agent.hugetlb)

对我上一个环境起作用的东西不再起作用了:

代码语言:javascript
复制
umount -a -t hugetlbfs
mount -t hugetlbfs nodev /mnt/huge

那么/proc/meminfo的输出是

代码语言:javascript
复制
HugePages_Total:    1024
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:     1024

但如果我试着运行它:

代码语言:javascript
复制
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?

EN

回答 1

Stack Overflow用户

发布于 2016-11-15 10:44:31

如果您按照下面的说明,您可以去掉分配的抱页:

( 1)让我们检查一下重新启动时免费的拥抱

代码语言:javascript
复制
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应用程序,从而产生错误

代码语言:javascript
复制
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)当我查看拥抱时,没有免费的

代码语言:javascript
复制
dpdk@dpdkvm:~/dpdk-1.8.0/examples/kni$ cat /proc/meminfo
...
HugePages_Total:     256
HugePages_Free:        0
...

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

代码语言:javascript
复制
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开头的文件,则可以将hugepage还给回

代码语言:javascript
复制
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
...
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39845042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档