SCAN vs MONITOR
Both SCAN and MONITOR use CA monitors, but they differ in how samples are buffered.
MONITOR estimates the number of samples based on the PV’s sampling period, allocates a buffer to hold that many samples, and fills it up. The buffer capacity is computed as:
int buffer_capacity = ((int) Math.round(Math.max((write_period/pvSamplingPeriod)*sampleBufferCapacityAdjustment, 1.0))) + 1;
pvSamplingPeriod— thesampling_periodfrom the PV’s PVTypeInfowrite_period— the engine’s write period fromarchappl.properties(secondsToBuffer); defaults to 10 secondssampleBufferCapacityAdjustment— a system-wide buffer-size adjustment set inarchappl.properties
For example, if write_period is 10 seconds and pvSamplingPeriod is
1 second, the buffer holds 11 samples. For a PV changing faster than 1
Hz, you will see 11 samples, a gap where the buffer overflows, then 11
more samples on the next buffer switch.
SCAN updates one slot at whatever rate is sent from the IOC, then a
separate thread reads that slot every pvSamplingPeriod seconds and
writes it to the buffer. This gives exactly one sample per
pvSamplingPeriod regardless of the IOC update rate, at the cost of
potentially missing intermediate values.