Guia de rastreamento dinâmico Solaris

Opções e ajuste de especulação

Se um buffer especulativo estiver cheio quando uma ação de rastreio especulativo for tentada, nenhum dado será armazenado no buffer e uma contagem de soltar será incrementada. Caso isso ocorra, uma mensagem do dtrace semelhante ao exemplo seguinte será gerada:


dtrace: 38 speculative drops

As solturas especulativas não evitarão que o buffer especulativo cheio seja copiado para o buffer principal quando o buffer for comprometido. Semelhantemente, as solturas especulativas poderão ocorrer, mesmo se houver tido solturas em um buffer especulativo que foi finalmente descartado. As solturas especulativas podem ser reduzidas, através do aumento do tamanho do buffer especulativo, que é ajustado através da opção specsize . A opção specsize pode ser especificada com qualquer sufixo de tamanho. A política de redimensionamento deste buffer é definida pela opção bufresize .

Os buffers especulativos talvez estejam indisponíveis quando speculation () for chamada. Se houver buffers que ainda não foram comprometidos ou descartados, uma mensagem do dtrace semelhante ao exemplo seguinte será gerada:


dtrace: 1 failed speculation (no speculative buffer available)

Você pode reduzir a probabilidade de especulações falhas desta natureza, aumentando o número de buffers especulativo com a opção nspec . O valor padrão de nspec é um.

Como alternativa, speculation() pode falhar porque todos os buffers especulativos estão ocupados. Neste caso, uma mensagem do dtrace semelhante ao exemplo seguinte será gerada:


dtrace: 1 failed speculation (available buffer(s) still busy)

Esta mensagem indica que speculation() foi chamada depois que commit() foi chamada por um buffer especulativo, mas antes que o buffer fosse realmente comprometido em todas as CPUs. Você pode reduzir a probabilidade de especulações falhas desta natureza, aumentando a taxa na qual as CPUs são limpas com a opção cleanrate. O valor padrão de cleanrate é101hz.


Observação –

Os valores da opção cleanrate devem ser especificados em número por segundo. Use o sufixo hz.