boost :: lockfree :: spsc_queue分配器的最大大小?

时间:2014-11-12 16:52:14

标签: c++ linux multithreading boost fifo

我需要缓冲一堆传入的10GigE数据,以便稍后将其写入磁盘。顺序执行此操作是一个问题,因为如果我不能足够快地为其提供服务,我正在读取的设备将会溢出。

为了寻找解决方案,我偶然发现了boost :: lockfree :: spsc_queue。特别是,我喜欢我可以为队列预先分配内存的事实,因为在push()期间调整大小可能会导致速度减慢,从而导致溢出。

但是,考虑到数据速率,我需要一个LARGE缓冲区。结果,我想知道我可以为队列分配的最大大小是什么(在项目数和字节数方面)。我计划部署的系统有24GB可用,所以我希望分配多达16GB以确保队列永远不会填满。最后要注意的是代码将驻留在Linux机器上(x86-64架构),因此如果有任何必要的内核参数来改变这个大小,那么也应该知道。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在尝试队列之后,我能够(动态地)分配一个庞大的队列。似乎没有限制。

虽然静态地限制了我在创建大型静态分配缓冲区时遇到错误。我没有玩弄它足以找到确切的值。