Guia de rastreamento dinâmico Solaris

Testes de bloqueio adaptativo

Os bloqueios adaptativos reforçam a exclusão mútua de uma seção crítica, e podem ser adquiridos na maioria dos contextos do kernel. Como os bloqueios adaptativos possuem algumas restrições de contexto, eles possuem a vasta maioria de sincronizações primitivas no kernel do Solaris. Estes bloqueios são adaptativos em seu comportamento com relação à contenção: quando um segmento tenta adquirir um bloqueio adaptativo mantido, ele determinará se o segmento proprietário está sendo executado atualmente em uma CPU. Se o proprietário estiver sendo executado em outra CPU, o segmento de aquisição irá girar. Se o proprietário não estiver sendo executado, o segmento de aquisição será bloqueado.

Os quatro testes lockstat que pertencem aos bloqueios adaptativos estão na Tabela 18–1. Para cada teste, arg0 contém um ponteiro para a estrutura kmutex_t que representa o bloqueio adaptativo.

Tabela 18–1 Testes de bloqueio adaptativo

adaptive-acquire

Teste de evento de manutenção que é acionado imediatamente depois que um bloqueio adaptativo é adquirido. 

adaptive-block

Teste de evento de contenção que é acionado depois que um segmento bloqueado em um mutex adaptativo mantido foi acionado novamente e adquiriu o mutex. Se ambos os testes forem ativados, adaptive-block é acionado antes de adaptive-acquire. Uma aquisição de bloqueio simples aciona os testes adaptive-block e adaptive-spin. arg1 de adaptive-block contém o tempo de espera em nanossegundos.

adaptive-spin

Teste de evento de contenção que é acionado depois que um segmento girado em um mutex adaptativo mantido adquiriu o mutex com êxito. Se ambos os testes forem ativados, adaptive-spin é acionado antes de adaptive-acquire. Uma aquisição de bloqueio simples aciona os testes adaptive-block e adaptive-spin. arg1 de adaptive-spin contém o tempo dos giros: a quantidade de nanossegundos que o ciclo de giros gastou antes que o bloqueio fosse adquirido.

adaptive-release

Teste de evento de manutenção que é acionado imediatamente depois que um bloqueio adaptativo é liberado.