gpt4 book ai didi

ubuntu - mlockall() : cannot allocate memory

转载 作者:行者123 更新时间:2023-12-04 18:26:48 26 4
gpt4 key购买 nike

我收到错误:mlockall 失败:无法分配内存调用函数 mlockall() 时:

if(mlockall(MCL_CURRENT|MCL_FUTURE) == -1) {
printf("mlockall failed: %m\n");
exit(-2);
}

使用的IDE:Eclipse操作系统:Ubuntu 16.04实时扩展使用:4.11.12 rt-15(抢占补丁)注意:我正在尝试实时建立 UDP 连接(使用英特尔 i210 以太网 Controller )。

当我在 eclipse 中调试时,显示的是:

无法在“/build/glibc-bfm8X4/glibc-2.23/misc/../sysdeps/unix/syscall-template.S”中找到源文件找到文件或编辑源查找路径以包含其位置。

如何解决?

最佳答案

作为man 2 mlockall说明您似乎没有权限锁定您尝试锁定的内存量。您可以调整该限制,或者尝试以 root 身份运行您的程序,例如通过 sudo。除了找出限制是否真的是问题之外,我不建议为任何其他事情做后者,所以这里是如何在 Kubuntu 上调整 bash 的限制 - 它可能在你的发行版上有不同的工作方式。

首先,让我们看看您的限制是多少:

$ ulimit -a | grep locked
max locked memory (kbytes, -l) 64

64 kbytes 不是很多!对此也有一个简写形式:

$ ulimit -l
64

您很可能无法轻松调整限制:

$ ulimit -l 1000000
bash: ulimit: max locked memory: cannot modify limit: Operation not permitted

即使你是,它也不会在 shell 调用、重启等过程中持续存在。所以我们需要一种不同的方法。

/etc/security/limits.conf 来救援!这是启动用户 session 时从中读取限制的默认值的文件 - 参见 man 5 limits.conf .

添加以下行(nobss 是我的用户名,显然你应该使用你的用户名)

nobss - memlock 1000000

将硬限制和软限制都设置为 1000000 KB 的文件。注销并登录,瞧瞧:

$ ulimit -l
1000000

这样更好。除非你的程序使用内存堆,否则这个限制应该可以——事实上在大多数情况下它已经足够了。

关于ubuntu - mlockall() : cannot allocate memory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46978524/

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