In a multi-node non-uniform memory access (NUMA) multi-processor system, a
designated node synchronization processor on each node, is synchronized.
Individual nodes accomplish internal synchronization of the other
processors on each node utilizing well known techniques. Thus it is
sufficient to synchronize one processor on each node. Node zero, a
designated system node that acts as a synchronization manager, estimates
the time it takes to transmit information in packet form to a particular,
remote node in the system. As a result a time value is transmitted from
the remote node to node zero. Node zero projects the current time on the
remote node, based on the transmission time estimate and compares that
with its own time and either updates its own clock to catch up with a
leading remote node or sends a new time value to the other node, requiring
the remote node to advance its time to catch up with that on node zero.
Code on the remaining nodes is mostly passive, responding to packets
coming from node zero and setting the time base value when requested.
Monotonicity of the time bases is maintained by always advancing the
earliest of the two time bases so as to catch up with the later one.