Buffer Resizing Policy
Occasionally, the system might not have adequate free kernel memory to allocate a
buffer of desired size either because not enough memory is available or because
the DTrace consumer has exceeded one of the tunable limits described in Chapter 16, Options and Tunables. You
can configure the policy for buffer allocation failure using bufresize option, which
defaults to auto. Under the auto buffer resize policy, the size of
a buffer is halved until a successful allocation occurs. dtrace(1M) generates a message if
a buffer as allocated is smaller than the requested size:
# dtrace -P syscall -b 4g
dtrace: description 'syscall' matched 430 probes
dtrace: buffer size lowered to 128m
...
or:
# dtrace -P syscall'{@a[probefunc] = count()}' -x aggsize=1g
dtrace: description 'syscall' matched 430 probes
dtrace: aggregation size lowered to 128m
...
Alternatively, you can require manual intervention after buffer allocation failure by setting bufresize
to manual. Under this policy, a failure to allocate will cause DTrace to
fail to start:
# dtrace -P syscall -x bufsize=1g -x bufresize=manual
dtrace: description 'syscall' matched 430 probes
dtrace: could not enable tracing: Not enough space
#
The buffer resizing policy of all buffers, principal, speculative and aggregation, is dictated
by the bufresize option.