For a second IOC instance with more cameras (14, but in this case only one
will ever be active at the same time) 5000 was not enough, but with a queue
size of around 15000 the callbeackRequest error disappeared.
What is the consequence of increasing the queue size? Would it be better to
split up the IOC into multiple IOCs with less cameras each?
For ITER's PLC integration, we eventually used 150k as the queue size to be on the safe side. (On systems with virtual memory management, a few MB more is no show-stopper.)
Independent of that, another (probably separate) Asyn issue doesn't allow using parallel callback threads with Asyn drivers. If you enable them, you will see performance going down instead of up. (IMHO, feels like a locking issue.)
Each queue element takes a few bytes (~32 bytes x 3 queues), that's about all that there is as a side effect. On recent Base versions, you can use the watermark queue stats mechanism - available through the iocShell and iocStats - to see how much of the queues have actually been used.
Cheers,
~Ralph