Guía de seguimiento dinámico de Solaris

Directiva ring

La directiva de memoria intermedia ring ayuda a realizar un seguimiento de los eventos que han conducido a un fallo. Como la reproducción de un fallo puede llevar horas o días, es posible que desee mantener sólo los datos más recientes. Una vez rellenada la memoria intermedia principal, el seguimiento se ajusta a la primera entrada, sobrescribiendo consiguientemente los datos de seguimiento antiguos. Establezca la memoria intermedia circular definiendo la opción bufpolicy en la cadena ring:


# dtrace -s foo.d -x bufpolicy=ring

Al utilizarlo para crear una memoria intermedia circular, dtrace(1M) no mostrará ningún resultado hasta que finalice el proceso. En ese momento, la memoria intermedia circular se consume y procesa. dtrace procesa cada memoria intermedia circular en el orden de la CPU. En una memoria intermedia de la CPU, los registros de seguimiento se muestran de más antiguo a más reciente. Al igual que con la directiva de memoria intermedia switch, no se realiza ninguna ordenación entre los registros de diferentes CPU. Si esta ordenación es necesaria, debe realizar un seguimiento de la variable timestamp como parte de la solicitud de seguimiento.

En el siguiente ejemplo, se muestra el uso de la directiva #pragma option para habilitar el almacenamiento en memoria intermedia circular:

#pragma D option bufpolicy=ring
#pragma D option bufsize=16k

syscall:::entry
/execname == $1/
{
	trace(timestamp);
}

syscall::rexit:entry
{
	exit(0);
}