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.