gpt4 book ai didi

c - 需要帮助解决不可分页内存的内存问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:06:28 24 4
gpt4 key购买 nike

我见过很多关于 malloc 内存消耗的问题,但没有一个是关于我正在处理的问题。

我正在处理一个需要良好性能的高内存消耗过程。代码在 C 中。我的意图是允许此进程使用最多 70% 的机器内存作为不可分页内存(为了性能),以及超过该部分的任何内存作为可分页内存,以便操作系统仍然有一些内存可以“玩”。

因为我在运行时需要它,所以任何分析程序(valgrind 或类似程序)都不相关。

问题是我只能跟踪我请求的内存量,但不能跟踪 malloc 使用的实际大小。因此,当我认为我分配的内存不超过 700Mb 时,malloc 持有约 1Gb 的内存,并且由于我要求不可分页,所以所有内存都是不可分页的,并且进程开始死于我。

如果有一种方法可以知道 malloc 为我的进程保留了多少不可分页内存,那就太棒了。但是阅读这里的帖子我猜它仍然不受支持。

我愿意接受任何人给我的任何想法或建议。

谢谢。

最佳答案

一般来说,如果您需要对内存分配进行精细控制,您应该使用 mmap() 显式分配它,然后提供您自己的 malloc() 替代品你所在的地区。这也使您免于以下问题:如果您尝试在一般的 malloc() 池中进行 mlock 操作,最终锁定的次数将超出您的预期,因为锁定granularity 是一个 4KB 的页面,您的锁定分配将散布在一般的 libc 分配中。

关于c - 需要帮助解决不可分页内存的内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5403364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com