TCA creates a temporary bank in the /Z/ dynamic store and divides it into two parts:-
$tca_buffer_frac 1.0 $tca_ambig_max 10The first determines what fraction of the avaliable free memory TCA can grab. If TCA is running alone then it can have it all, but if ever TCA runs in-line with other processors, it will have to leave something for them. The second command determines the number of ambiguities that the output buffer will have to hold and hence the size of the input buffer. These sizes are recorded in the output:-
Buffer Statistics Size (words): 1994221 Input: Capacity available (records): 100000 Capacity required (records): 3 No. of overflows: 0 Output: Capacity available (records): 10 Capacity required (records): 1 No. of overflows: 0Making the buffers too large wastes memory and could cause problems if other processors are running. Making the buffers too small results in overflows. In this case TCA will abort if the command:-
$tca_quit_on_ovfl $onhas been issued, otherwise it continues but some associations will be lost. In this case TCA will attempt to calculate the capacity required to prevent the overflow (see the output above) but, in the case of input buffer overflow, this is going to be little more than a guess. Increasing a buffer may involve increasing the size of the /Z/ store.
To see what an output buffer overflow looks like try this:-
$tca_ambig_req 1 $tca_ambig_max 1 $tca_time_gate -20000. 20000. $tca_quit_on_ovfl $off @tca_demo
which produces:-
Output: Capacity available (records): 1 Capacity required (records): 4 No. of overflows: 26
As has been explained above, the best way to make efficient use of the buffer is to include tests that define primaries and secondaries as tightly as possible. That way anything that can be neither is not placed in the buffer.