END
probes usually do not fire until tracing
has been explicitly stopped by the DTrace consumer.
END
probes are guaranteed to fire only on one
CPU, but the CPU on which the probe fires is undefined. With
fill
buffers, tracing is explicitly stopped
when at least one of the per-CPU principal buffers has been
marked as filled. If the fill
policy is
selected, the END
probe might fire on a CPU
that has a filled buffer. To accommodate END
tracing in fill
buffers, DTrace calculates
the amount of space that is potentially consumed by
END
probes and subtracts this space from the
size of the principal buffer. If the net size is negative,
DTrace does not start and dtrace outputs the
following error message:
dtrace: END enablings exceed size of principal buffer
The reservation mechanism ensures that a full buffer always has
sufficient space for any END
probes.