User manual
Interprocessor Synchronization Window
48
Interprocessor synchronization window
Interprocessor synchronization window is experimental feature of VAX MP. While it is believed to be
stable, it has not been tested yet for VAX MP initial release as thoroughly as running VAX MP with
synchronization window turned off. It is recommended therefore for now for most installations and use
purposes to use VAX MP without synchronization window enabled, until more testing had been
performed and more benchmarking data is available confirming expected benefits of synchronization
window.
Interprocessor synchronization window is VAX MP mechanism that constrains the drift of VCPUs
relatively to each other to a certain maximum number of instruction cycles.
Without synchronization window enabled VCPUs may “drift” relative to each other due to host
scheduler preemption, simulator page faults, host antivirus interventions and other factors outside of
VAX MP control. Such drift may cause OpenVMS to signal false timeouts and cause OpenVMS to believe
that one of the processors is hung (whereas in fact its VCPU thread had been temporarily preempted by
the host scheduler) and cause OpenVMS to bugcheck. For this reason, when synchronization window is
not in use, OpenVMS SYSGEN parameter TIME_CONTROL must be set to 6 to disable bugchecks because
of SMP timeouts.
Use of synchronizaton window constrains relative drift between the VCPUs. If some VCPU is falling too
much behind compared to other VCPUs forward progress, other VCPUs will temporary pause their
execution and wait for the lagging VCPU to “catch up”. To minimize impact on scalability, VAX MP
synchronization window only constrains the execution of high-IPL code that is likely to designate
processors as performing inter-CPU interaction or activities relevant for inter-CPU interaction.
Synchronization window will not constrain low-IPL code, in particular user-mode code.
The only exception is that execution of interlocked queue instructions will momentarily enter VCPU into
constrained mode for the duration of the instruction regardless of current IPL or CPU mode, even when
interlocked queue instruction is executed in user mode.
Detailed technical explanation of synchronizaton window mechanism and logics is beyond the scope of
this document.
For detailed description of synchronization window refer to “VAX MP Technical Overview”, chapters
“Interprocessor synchronization window” and “Implementation of VAX interlocked instructions”.
Very roughly, synchronization window consists of two subcomponents: SYS and ILK. SYS is responsible
for constraining the drift between processors holding a spinlock or trying to acquire a spinlock or
running other high-IPL code. SYS component constrains the drift between processors in described states
to a fraction of a threshold controlled by SYSGEN parameter SMP_SPINWAIT and prevents CPUSPINWAT
bugchecks. ILK component is responsible for limiting relative drift between processors executing certain
interlocked instruction patterns, such as trying to perform operations on interlocked queues, and is
associated with SYSGEN parameter LOCKETRY and prevention of BADQHDR bugchecks.










