使用大页面分配的内存是否有限制?(Is there a limit on memory allocated using huge pages?)

编程入门 行业动态 更新时间:2024-10-26 06:38:20
使用大页面分配的内存是否有限制?(Is there a limit on memory allocated using huge pages?)

我使用“大页面(1MB大小)”并使用mmap分配内存。 分配4 GB内存后,mmap返回失败。

mmap(NULL, memsize, PROT_READ | PROT_WRITE,MAP_PRIVATE | MAP_ANONYMOUS |MAP_POPULATE | MAP_HUGETLB, -1, 0);

这里memsize = 1GB

我在循环中调用上面的语句。 最多4次迭代就可以了。 在第5次迭代中,mmap失败。

mmap(NULL, memsize, PROT_READ | PROT_WRITE,MAP_PRIVATE | MAP_ANONYMOUS |MAP_POPULATE , -1, 0);

上面的语句(没有largepages)适用于任何次数的迭代。 我错过了与大页面相关的任何信息吗? 我尝试了“MAP_NORESERVE”标志,如4GB中的mmap失败中提到的那样。

任何形式的信息将不胜感激。 谢谢。

I am allocating memory using "huge pages(1MB size)" and using mmap. After allocating 4 GB of memory ,mmap returns fail.

mmap(NULL, memsize, PROT_READ | PROT_WRITE,MAP_PRIVATE | MAP_ANONYMOUS |MAP_POPULATE | MAP_HUGETLB, -1, 0);

here memsize = 1GB

I am calling above statement in a loop. Upto 4 iterations it is fine. In 5th iteration mmap is failed.

mmap(NULL, memsize, PROT_READ | PROT_WRITE,MAP_PRIVATE | MAP_ANONYMOUS |MAP_POPULATE , -1, 0);

Above statement (without hugepages) works perfectly for any number of iterations. Am I missing any information related to hugepages? I tried "MAP_NORESERVE" flag also as mentioned in mmap fail after 4GB.

Any sort of information will be greatly appreciated. Thank you.

最满意答案

更改文件中分配的“巨大页数”

/proc/sys/vm/nr_hugepages

根据您要分配的内存量。 早些时候它说:

>cat /proc/meminfo | grep HugePages HugePages_Total = 2500

4GB =>它有2048 * 2Mb = 4Gb

已经消耗了2048个大页面。

一个GB的内存需要(1GB / 2MB = 512)512个更大的页面。 但是只剩下2500 - 2048 = 452。 但是你需要512.这就是为什么mmap失败的问题。 如果将上述文件(/ proc / sys / vm / nr_hugepages)内容编辑为2560,则允许5GB。 根据您需要的内存量更改它。 感谢@KlasLindbäck。 我提到了链接 ,小研究揭露了工作

Change the allocated "number of huge pages" in file

/proc/sys/vm/nr_hugepages

according to the amount of memory you want to allocate. Earlier it says:

>cat /proc/meminfo | grep HugePages HugePages_Total = 2500

4GB => it has 2048*2Mb= 4Gb

2048 huge pages already consumed.

one more GB of memory need (1GB/2MB= 512) 512 more huge pages. But 2500 - 2048 =452 only left. But you need 512. Thats the problem why mmap failed. If you edit the above mentioned file(/proc/sys/vm/nr_hugepages) contents to 2560, it allows 5GB. Change it according to the amount of memory you need. Thanks to @ Klas Lindbäck. I referred back the link, small research exposed the working

更多推荐

本文发布于:2023-08-07 12:03:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1464286.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:分配   内存   页面   limit   pages

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!