【问题标题】:boost::lockfree::spsc_queue allocator maximum size?boost::lockfree::spsc_queue 分配器最大大小?
【发布时间】:2015-01-09 14:46:31
【问题描述】:

我需要缓冲一堆传入的 10GigE 数据,以便稍后将其写入磁盘。按顺序这样做是一个问题,因为如果我没有足够快地维修它,我正在读取的设备将会溢出。

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

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

提前感谢您的帮助。

【问题讨论】:

    标签: c++ linux multithreading boost fifo


    【解决方案1】:

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

    不过,从静态上讲,您是有限的,当我创建大型静态分配的缓冲区时,我收到了错误。不过,我没有充分利用它来找到确切的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 2015-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-24
      相关资源
      最近更新 更多