关于最简生产者与消费者架构模型的优化

“串口数据速率较高”是多少Mbps?
■网友
"发送过来的数据通过调用厂家给的read()函数获取""串口数据速率较高时,我的读取速率就跟不上了"这就不是你的问题了吧
■网友
PCIE 2.0接口带宽5.0Gbps,1.0版本也有2.5Gbps!有没有测试过tcp转发速率是多少?(是同系统转发还是局域网内转发?) 要优化的话主要看瓶颈在哪里,无论是PCIE还是TCP数据包,可能会有一个系统内存和用户内存之间的拷贝的过程,会耗费一定的效率,如果是这个造成的(一般不可能),你没有板块内核层调用接口,无解。不过,既然是厂家给的接口,一般不会存在这个问题。个人猜测,最可能原因是TCP转发速率跟不上,缓冲队列消耗速度跟不上写入速度,造成写入阻塞,影响读取速率。如果是这个原因,可以考虑改UDP协议,改一次转发的数据包大小,如果是局域网转发可以考虑上更高带宽的网卡和交换机。
■网友
首先看一下循环缓冲队列是不是一段时间后就满了,如果存在满的情况,那说明消费者消费过慢,可以多加几个消费者,同时消费,这样缓冲队列会需要加锁;如果不存在满得情况,那说明串口速率实在是太快了…………
■网友
是不是缓冲区开太小了?


    推荐阅读