next up previous contents
Next: Summary Up: Learning by Example Previous: Ambiguous Associations   Contents

Buffer Overflows

TCA creates a temporary bank in the /Z/ dynamic store and divides it into two parts:-

Input Buffer
This is a large buffer that holds all the events in the time gate.

Output Buffer
This is a small buffer that holds all the associations for the current primary.

The user controls the size of these two buffers with the commands e.g:-
$tca_buffer_frac  1.0
$tca_ambig_max    10
The 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 $on
has 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.


next up previous contents
Next: Summary Up: Learning by Example Previous: Ambiguous Associations   Contents
sno Guest Acct 2009-09-09