I think I have now determined once and for all that the daqd problems are NOT due to disk IO contention.
I have mounted a tmpfs at /frames/tmp and have told daqd to write frames there. The tmpfs exists entirely in RAM. There is essentially zero IO wait for such a filesystem, so daqd should never have trouble writing out the frames.
But yet daqd continues to fail with the "0 empty blocks in the buffer" warnings. I've been down a rabbit hole.