Handbuch zur dynamischen Ablaufverfolgung in Solaris

Prüfpunkte für adaptive Sperren

Adaptive Sperren (adaptive locks) schützen einen kritischen Abschnitt durch Mutex (gegenseitiger Ausschluss) und können in den meisten Kontexten im Kernel erworben werden. Da für adaptive Sperren nur wenige Kontextbeschränkungen gelten, stellen sie die große Mehrheit der Synchronisierungsgrundeinheiten im Solaris-Kernel dar. Diese Sperren weisen ein in Bezug auf Konkurrenzsituationen adaptives (dynamisches) Verhalten auf: Wenn ein Thread eine belegte adaptive Sperre fordert, stellt er fest, ob der besitzende Thread derzeit auf einer CPU läuft. Wenn der Besitzer auf einer anderen CPU läuft, wird der fordernde Thread in den Wartezustand versetzt. Wenn der Besitzer nicht läuft, wird der fordernde Thread blockiert.

Die vier lockstat-Prüfpunkte für adaptive Sperren sind in Tabelle 18–1 aufgeführt. arg0 enthält für jeden Prüfpunkt einen Zeiger auf die kmutex_t-Struktur, die den adaptiven Lock darstellt.

Tabelle 18–1 Prüfpunkte für adaptive Sperren

adaptive-acquire

Hold-event-Prüfpunkt, der unmittelbar nach dem Erlangen einer adaptiven Sperre ausgelöst wird. 

adaptive-block

Contention-event-Prüfpunkt, der ausgelöst wird, nachdem ein durch einen belegten, adaptiven Mutex blockierter Thread „aufgewacht“ ist und den Mutex erlangt hat. Wenn beide Prüfpunkte aktiviert sind, wird adaptive-block vor adaptive-acquire ausgelöst. Für das Erlangen einer einzigen Sperre können die Prüfpunkte adaptive-block und adaptive-spin ausgelöst werden. arg1 für adaptive-block enthält die Schlafzeit in Nanosekunden.

adaptive-spin

Contention-event-Prüfpunkt, der ausgelöst wird, nachdem ein durch einen belegten, adaptiven Mutex in den Wartezustand versetzter Thread den Mutex erfolgreich erlangt hat. Wenn beide Prüfpunkte aktiviert sind, wird adaptive-spin vor adaptive-acquire ausgelöst. Für das Erlangen einer einzigen Sperre können die Prüfpunkte adaptive-block und adaptive-spin ausgelöst werden. arg1 für adaptive-spin enthält die Spin-Anzahl: die Zeit in Nanosekunden, die in der Warteschleife vor dem Erlangen der Sperre verbracht wurde.

adaptive-release

Hold-event-Prüfpunkt, der unmittelbar nach der Freigabe einer adaptiven Sperre ausgelöst wird.