我需要缓冲一堆传入的10GigE数据,以便稍后将其写入磁盘。顺序执行此操作是一个问题,因为如果我不能足够快地为其提供服务,我正在读取的设备将会溢出。
为了寻找解决方案,我偶然发现了boost :: lockfree :: spsc_queue。特别是,我喜欢我可以为队列预先分配内存的事实,因为在push()期间调整大小可能会导致速度减慢,从而导致溢出。
但是,考虑到数据速率,我需要一个LARGE缓冲区。结果,我想知道我可以为队列分配的最大大小是什么(在项目数和字节数方面)。我计划部署的系统有24GB可用,所以我希望分配多达16GB以确保队列永远不会填满。最后要注意的是代码将驻留在Linux机器上(x86-64架构),因此如果有任何必要的内核参数来改变这个大小,那么也应该知道。
提前感谢您的帮助。
答案 0 :(得分:0)
在尝试队列之后,我能够(动态地)分配一个庞大的队列。似乎没有限制。
虽然静态地限制了我在创建大型静态分配缓冲区时遇到错误。我没有玩弄它足以找到确切的值。