Si una memoria intermedia especulativa está llena cuando se intenta realizar una acción de seguimiento especulativo, no se almacena ningún dato en la memoria intermedia y se aumenta el recuento de anulaciones. Si se produce esta situación, se generará un mensaje de dtrace parecido al siguiente:
dtrace: 38 speculative drops |
Las anulaciones especulativas no impedirán que se copie la memoria intermedia especulativa completa en la memoria intermedia principal al confirmar la memoria intermedia. Del mismo modo, se pueden producir anulaciones especulativas, aunque éstas se experimenten en una memoria intermedia especulativa que se haya descartado en último término. Puede reducir el número de anulaciones especulativas aumentando el tamaño de la memoria intermedia especulativa, que se puede ajustar mediante la opción specsize. La opción specsize puede especificarse con cualquier sufijo de tamaño. La opción bufresize establece la directiva de cambio de tamaño de esta memoria intermedia.
Es posible que las memorias intermedias especulativas no estén disponibles al llamar a la función speculation. () Si hay memorias intermedias que aún no se han confirmado o descartado, se generará un mensaje de dtrace parecido al siguiente:
dtrace: 1 failed speculation (no speculative buffer available) |
Puede reducir las probabilidades de que se produzcan especulaciones fallidas de esta naturaleza, aumentando el número de memorias intermedias especulativas con la opción nspec. El valor de nspec se establece de forma predeterminada en 1.
Es posible que speculation() pueda fallar también debido a que todas las memorias intermedias especulativas estén ocupadas. En ese caso, se generará un mensaje de dtrace parecido al siguiente:
dtrace: 1 failed speculation (available buffer(s) still busy) |
Este mensaje indica que se ha llamado a la función speculation() después de llamar a commit() para una memoria intermedia especulativa, pero antes de que la memoria intermedia se haya confirmado realmente en todas las CPU. Puede reducir las probabilidades de que se produzcan especulaciones fallidas de esta naturaleza, aumentando la tasa de limpieza de las CPU con la opción cleanrate. El valor de cleanrate se establece de forma predeterminada en 101hz.
Los valores de la opción cleanrate se deben especificar en número por segundo. Utilice el sufijo hz.