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: 0
Making 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.