gpt4 book ai didi

c - OSX 内存分配缓慢

转载 作者:太空狗 更新时间:2023-10-29 15:40:31 24 4
gpt4 key购买 nike

我试图找出我在 OSX 中遇到的内存分配问题。如果我正常编译和运行下面的代码,它会运行得相当快。

#include <sys/mman.h>
#define SIZE 8 * 1024 * 1024

int main(int argc, char const *argv[]) {
for (int i = 0; i < 50000; ++i) {
mmap(0, SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
}
return 0;
}

但是,如果我编译相同的代码但链接到某个库(即:clang -o test test.c -lpcre),它将随机地运行得快(30 毫秒)或非常慢(18秒)。

请注意,我什至没有使用库,只是链接。我还注意到这似乎不会发生在任何图书馆。

我运行的是 OSX 10.10.3。有什么想法吗?

最佳答案

这只是内核中的一个错误,其他人也遇到过。内核中用于查找未使用的地址空间 block 以进行分配的代码使用了低效的搜索算法。

我怀疑它似乎取决于您是否链接库的原因是动态加载器 (dyld) 必须映射这样的库,并且有时会使内核的 VM 管理数据进入触发搜索效率低下的状态。它不会在每次运行时都发生的原因可能与地址空间布局随机化 (ASLR) 有关。

我鼓励您就此向 Apple 提交错误,特别是因为您有一个很好的简单测试用例。 (它可能会因为重复而被关闭,因为我相信你不会是第一个提交它的人。尽管如此,每一个新的错误报告都可以帮助隔离它并提高它在 Apple 中的优先级。)

关于c - OSX 内存分配缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30956242/

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