0
我使用“巨大页面(1MB大小)”和使用mmap分配内存。分配4 GB内存后,mmap返回失败。使用巨大页面分配的内存是否有限制?
mmap(NULL, memsize, PROT_READ | PROT_WRITE,MAP_PRIVATE | MAP_ANONYMOUS |MAP_POPULATE | MAP_HUGETLB, -1, 0);
这里memsize个= 1GB
我打电话上面的循环语句。 Upto 4迭代很好。在第5次迭代中,mmap失败。
mmap(NULL, memsize, PROT_READ | PROT_WRITE,MAP_PRIVATE | MAP_ANONYMOUS |MAP_POPULATE , -1, 0);
上面的语句(没有巨大的页面)完美地适用于任何数量的迭代。我是否缺少任何有关巨大页面的信息? 我也尝试过“MAP_NORESERVE”标志,如mmap fail after 4GB中所述。
任何形式的信息将不胜感激。谢谢。
'mmap returns fail' - 这没有用 – KevinDTimm
你的系统有多少可用?你可以使用'cat/proc/meminfo |列出它grep HugePages'。补充阅读:https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt –
@KevinDTimm:我检查了返回值(MAP_FAILED),然后只有我结束了mmap失败。 – ANTHONY