2014-11-12 2 views
1

들어오는 10GigE 데이터를 버퍼링하여 나중에 디스크에 쓸 수 있어야합니다. 너무 빨리 서비스하지 않으면 내가 읽는 장치가 오버플로 할 것이므로 순차적으로 처리하는 것이 문제입니다.boost :: lockfree :: spsc_queue 할당 자 최대 크기?

해결책을 찾아서 boost :: lockfree :: spsc_queue를 발견했습니다. 특히 push() 중에 크기를 조정하면 잠재적으로 오버플로를 초래할 수있는 속도가 느려질 수 있기 때문에 큐에 대한 메모리를 미리 할당 할 수 있다는 사실을 좋아합니다.

그러나 데이터 속도가 주어지면 LARGE 버퍼가 필요합니다. 결과적으로, 큐에 할당 할 수있는 최대 크기가 무엇인지 궁금합니다 (항목 수와 바이트 수). 배포를 계획하고있는 시스템은 24GB를 사용할 수 있으므로 대기열이 가득 차지 않도록 16GB를 할당하려고합니다. 마지막으로 코드는 Linux 머신 (x86-64 아키텍처)에있을 것이므로이 크기를 변경하는 데 필요한 커널 매개 변수가 있으면 잘 알려줘야합니다.

도움을 미리 감사드립니다.

답변

0

대기열을 실험 한 후 거대한 대기열을 (동적으로) 할당 할 수있었습니다. 제한이없는 것 같습니다.

정적으로, 당신은 제한되어 있고 정적으로 할당 된 큰 버퍼를 만들 때 오류가 발생했습니다. 나는 정확한 값을 찾을만큼 충분히 놀지 않았다.