【发布时间】:2015-01-09 14:46:31
【问题描述】:
我需要缓冲一堆传入的 10GigE 数据,以便稍后将其写入磁盘。按顺序这样做是一个问题,因为如果我没有足够快地维修它,我正在读取的设备将会溢出。
在寻找解决方案时,我偶然发现了 boost::lockfree::spsc_queue。特别是,我喜欢我可以为队列预先分配内存的事实,因为在 push() 期间调整大小可能会导致速度变慢,从而导致溢出。
但是,考虑到数据速率,我需要一个 LARGE 缓冲区。结果,我想知道我可以为队列分配的最大大小是多少(在项目数和字节数方面)。我计划部署的系统有 24GB 可用空间,所以我希望分配多达 16GB 的空间以确保队列永远不会填满。最后要注意的是,代码将驻留在 Linux 机器上(x86-64 架构),所以如果有任何需要的内核参数来改变这个大小,那也很高兴知道。
提前感谢您的帮助。
【问题讨论】:
标签: c++ linux multithreading boost fifo