First check the maximum trigger rate and maximum data rate for different sample lengths (for each channels):
sample length Maximum rate MB/s CPU % (per thread)
16us 0.44kHz 231 20
6.4us 1.04kHz 214 20
3.2us 1.95kHz 198 22
1.6us 3.12kHz 160 26
0.8us 4.88kHz 127 30 (what are these threads doing?)
Look at the code more. See that there is a maximum size for the block transfer of 10kB. Increase this to 130kB
(which is the maximum amount that this board can make per event). Now find
sample length Maximum rate MB/s CPU % (per thread)
16us 0.68kHz 346 7
6.4us 1.46kHz 300 10
1.6us 3.6kHz 190 25
Good. So for long samples we are actually slightly above the maximum transfer rate of 85MB/s*4 = 340MB/s
Tried writing out the data to disk at the maximum 345MB/s rate; the DAQ can't keep up. Maximum rate was more
like 270MB/s.
I think the mlogger was actually fine. But I think the write-to-disk speed of the harddrive could not keep up.
So I think we are limited
by hardware in that case. We would need a large raid array to be able to write faster. |