Solaris 动态跟踪指南

缓冲区调整大小策略

偶尔,系统可能会因为没有足够的可用内存,或者 DTrace 使用者超出第 16 章中说明的某项可调整限制,而没有足够可用的内核内存来分配所需大小的缓冲区。可以使用 bufresize 选项(缺省为 auto)配置缓冲区分配失败的策略。在 auto 缓冲区调整大小策略下,将平均分配缓冲区大小,直到成功进行分配。如果分配的缓冲区小于请求的大小,dtrace(1M) 将生成一条消息:


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

或者:


# dtrace -P syscall'{@a[probefunc] = count()}' -x aggsize=1g
dtrace: description 'syscall' matched 430 probes
dtrace: aggregation size lowered to 128m
...

或者,可以通过将 bufresize 设置为 manual,要求在缓冲区分配失败之后进行手动干预。在此策略下,分配失败将会导致 DTrace 启动失败:


# dtrace -P syscall -x bufsize=1g -x bufresize=manual
dtrace: description 'syscall' matched 430 probes
dtrace: could not enable tracing: Not enough space
#

所有缓冲区(主体、推理和聚合)的缓冲区调整大小策略都由 bufresize 选项指定。