Avaliando dados do spinlock
O relatório do spinlock apresenta as seguintes informações sobre spinlocks:
- Adquirir taxa de exemplo
- Taxa de exemplo de contenção
- Limite de rotação
- Número de CPUs
- Velocidade da CPU, em megahertz
- Comprimento do rastreamento, em nanossegundos
- Comprimento do rastreamento, em ciclos
Seções de relatório do Spinlock
As próximas seções do relatório mostram o uso do spinlock durante o período de tempo do perfil.
Spinlocks individuais
Cada spinlock é mostrado separadamente. Os spinlocks são classificados com os spinlocks "mais quentes" mostrados primeiro. Muitas vezes é possível identificar o gargalo do spinlock examinando os primeiros spinlocks.
As seguintes informações são apresentadas para cada spinlock:
- Tipo de bloqueio
- Endereço do kernel de bloqueio
- Símbolo do bloqueio (observe que os spinlocks criados dinamicamente não têm símbolos)
Seção de relatório de resumo
Um relatório de resumo segue as seguintes informações:
- Percentual de tempo de CPU gasto na aquisição de bloqueio
- Percentual de tempo de CPU gasto na contenção de bloqueio
- Taxa de aquisição de bloqueio
- Taxa de colisão
- Taxa de rotação
- Taxa de contenção, amostrada e normalizada
As duas seções finais do relatório são os eventos ignorados devido a interrupções e à função de versão.
Eventos ignorados devido a interrupções
Interrupções podem ocorrer enquanto os spinlocks são mantidos. Quando isso ocorre, o tempo de tratamento de interrupção é incluído no tempo de retenção do spinlock e o tempo de retenção do spinlock aparece excessivamente longo. O Xperf não inclui eventos de spinlock que são mantidos enquanto uma interrupção é tratada ao calcular os tempos de retenção do spinlock. A Events skipped due to interrupts
linha exibe o número de eventos que não foram incluídos no cálculo. Esse número normalmente é muito pequeno.
Funções de versão
Um spinlock pode ser adquirido ou liberado de caminhos de código diferentes. Uma lista de funções de versão do spinlock é exibida no final do relatório. A lista é classificada pelo tempo de retenção do spinlock. Informações adicionais sobre uma função de versão específica, como aquisição ou contenção, também são apresentadas.
Exemplo
O exemplo a seguir mostra como obter um resumo dos dados do spinlock.
xperf -i example.etl -symbols -o example.txt -a spinlock -summary
O exemplo a seguir mostra como limitar o número de registros retornados aos cinco spinlocks mais ativos.
xperf -i example.etl -symbols -o example.txt -a spinlock -summary -counts 5