5.5 Buffer Resizing Policy

Occasionally, the system might not have adequate free kernel memory to allocate a buffer of the desired size, either because not enough memory is available or because the DTrace consumer has exceeded one of the tunable limits that are described in Chapter 10, Options and Tunables. You can configure the policy for buffer allocation failure by using the 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 generates a message if a buffer, as allocated, is smaller than the requested size, as shown in the following example:

# dtrace -P syscall -b 4g
dtrace: description 'syscall' matched 430 probes
dtrace: buffer size lowered to 128m ...

Or, a message similar to the following is generated:

# 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, an allocation failure prevents DTrace from starting:

# 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 for all buffers (principal, speculative and aggregation) is dictated by the bufresize option.