Guía de seguimiento dinámico de Solaris

Sondeos de bloqueo adaptativo

Los bloqueos adaptativos fuerzan la exclusión mutua a una sección crítica, y pueden obtenerse en la mayoría de los contextos dentro del núcleo. Dado que los bloqueos adaptativos tienen un número reducido de restricciones de contexto, cubren la gran mayoría de primitivas de sincronización del núcleo de Solaris. Estos bloqueos son adaptativos en su comportamiento con respecto a la contención: cuando un subproceso intenta adquirir un bloqueo adaptativo mantenido, determinará si el subproceso propietario se encuentra en ejecución en una CPU. Si el propietario se encuentra en ejecución en otra CPU, el subproceso que adquiere se girará. Si el propietario no se encuentra en ejecución, el subproceso que se adquiere se bloqueará.

Los cuatro sondeos lockstat que forman parte de los bloqueos adaptativos se encuentran en la Tabla 18–1. Para cada sondeo, arg0 contiene un puntero a la estructura kmutex_t que representa el bloqueo adaptativo.

Tabla 18–1 Sondeos de bloqueo adaptativo

adaptive-acquire

Sondeo de evento de retención que se activa inmediatamente después de adquirir un bloqueo adaptativo. 

adaptive-block

Sondeo de evento de contención que se activa después de la reactivación de un subproceso que se ha bloqueado en un mutex adaptativo retenido y tras la adquisición por su parte del mutex. Si se encuentran habilitados ambos sondeos, adaptive-block se activará antes que adaptive-acquire. Una única adquisición de bloqueo puede activar tanto el sondeo adaptive-block como el sondeo adaptive-spin. arg1 para adaptive-block contiene el tiempo de inactividad en nanosegundos.

adaptive-spin

Sondeo de evento de contención que se activa después de que un subproceso que ha girado en un mutex adaptativo retenido haya adquirido correctamente el mutex. Si ambos se encuentran habilitados, adaptive-spin se activa antes de adaptive-acquire . Una única adquisición de bloqueo puede activar tanto el sondeo adaptive-block como el sondeo adaptive-spin. arg1 para adaptive-spin contiene el tiempo de giros: número de nanosegundos que se han dedicado al bucle de giro antes de adquirir el bloqueo.

adaptive-release

Sondeo de evento de retención que se activa inmediatamente después de liberar un bloqueo adaptativo.