Hi Andy,
I have to say well done for narrowing the fault down as far as you have already :-)
A major bonus that you have a known working system to test against!
I'm assuming this is always happening when you have a panel loaded, is it possible to test a fresh new profile without Logix / Sensor tables / panels?
Changing error logging won't make much difference I think, what I've found with a Pi is the GUI processing for VNC takes up magnitudes more resource than logging. ( though I could well be wrong )
For JMRI development I'm testing with a Pi2 + CANUSB4, class 10 SD Card, cable networked to a router.
No missed frames observed when I've done peak then back-off testing, but thinking this through realised one key difference.
I don't have the CANUSB4 direct to JMRI.
I'm running on the Pi so that the CAN frames are on the local network.
JMRI on the Pi connects to MERGCBUSServer as localhost via a Network Connection, not a USB connection.
Perhaps repeat the test to see if frames are ever lost when running via CBUSServer on the Pi??
Note that missed CBUS CAN frames will be a lot more obvious in the startup of JMRI v 15.5+ compared to v 14.4.
The JMRI? will error log if there's an issue with a dropped frame ( approx. 1,000 frames on an average CANPAN ).
We can't do this routinely for all frames as it's only certain sequences where frames should 100% be expected back in response.
The can be handy for debug as well.
With nothing else apart from 2 JMRI's on the network, leave the sequencer on 1 JMRI sending an event every 20ms, then put the kettle on.
After your cuppa, check if totals in each of the JMRI console logs match.
Steve.