GNU Radio与Python脚本:“shmget (2):设备上没有剩余空间”

2 投票
1 回答
1694 浏览
提问于 2025-04-18 11:33

我在运行一个使用gnuradio 3.7模块的Python脚本时遇到了以下错误:

> gr::vmcircbuf_sysv_shm: shmget (2): No space left on device
> gr::vmcircbuf_sysv_shm: shmget (2): No space left on device
> gr::vmcircbuf_sysv_shm: shmget (2): No space left on device
> gr::buffer::allocate_buffer: failed to allocate buffer of size 64 KB
> gr::vmcircbuf_sysv_shm: shmget (2): No space left on device
> gr::vmcircbuf_sysv_shm: shmget (2): No space left on device
> gr::vmcircbuf_sysv_shm: shmget (2): No space left on device
> gr::buffer::allocate_buffer: failed to allocate buffer of size 64 KB
> terminate called after throwing an instance of 'std::bad_alloc'  
> what():  std::bad_alloc Aborted (core dumped)

我按照这里的建议进行了操作:http://osdir.com/ml/discuss-gnuradio-gnu/2013-06/msg00521.html,并且修改了kernel.shmall和kernel.shmmax的值。

但是,什么样的值是合适的呢?我把它们增加了8倍,但还是没有成功。

更多信息:我在一个循环中启动和停止gnuradio的Python链。每次我停止一个图表时,内存使用情况都很好。我有6个CPU和24GB的内存。

最好的祝愿,Chris

1 个回答

2

我们在邮件列表上解决了这个问题,请查看下面的讨论串。简单来说:GNU Radio使用共享内存来处理它的循环缓冲区,在某些情况下,你可能会用完这些缓冲区的句柄,这就会导致你看到这个错误。

运行

sudo sysctl kernel.shmmni=32000

能解决你的问题吗?

http://lists.gnu.org/archive/html/discuss-gnuradio/2014-11/msg00292.html

问候,
Marcus

撰写回答