Guia de rastreamento dinâmico Solaris

Política de redimensionamento de buffer

Ocasionalmente, o sistema pode não ter memória de kernel livre adequada para alocar um buffer de tamanho desejado seja porque não há memória suficiente disponível ou porque o consumidor do DTrace excedeu um dos limites ajustáveis descritos no Capítulo 16Opções e ajustáveis. Você pode configurar a política para falha de alocação de buffer usando a opção bufresize , que tem como padrão auto. Na política de redimensionamento de buffer auto, o tamanho de um buffer é dividido até que uma alocação bem-sucedida ocorra. dtrace(1M) gera uma mensagem se um buffer alocado for menor que o tamanho solicitado:


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

ou:


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

Como alternativa, você pode requerer intervenção manual após falha na alocação do buffer definindo bufresize como manual. Nessa política, uma falha de alocação fará com que o DTrace deixe de ser iniciado:


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

A política de redimensionamento de buffer de todos os buffers, principal, especulativo e agregação, é ditada pela opção bufresize.