Perf lru latch contention

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus de diagnostic
Domaine Performance
Voir aussi Perf redo log contention · Perf performance snapshot

Perf lru latch contention mesure la contention sur le latch cache buffers lru chain, qui protège la liste LRU (Least Recently Used) du buffer cache. Une forte contention sur ce latch dégrade les performances de toute session qui doit lire ou écrire un bloc en cache.

Script

SET LINESIZE 145
SET PAGESIZE 9999
SET VERIFY   OFF

COLUMN child_num         HEADING 'N° enfant'
COLUMN ratio_sleeps_gets HEADING 'Ratio sleeps/gets (%)'
COLUMN ratio             HEADING 'Ratio succès (%)'

SELECT
    child#                             child_num
  , ROUND(sleeps / gets * 100, 2)         ratio_sleeps_gets
  , ROUND((1 - sleeps / gets) * 100, 2)   ratio
FROM
    v$latch_children
WHERE
    name = 'cache buffers lru chain'
/

Le script interroge v$latch_children (et non v$latch) : depuis Oracle 8i, ce latch est subdivisé en plusieurs latches enfants (typiquement en fonction du nombre de CPU) pour réduire la contention — regarder le détail par enfant plutôt que la seule moyenne globale permet de détecter un déséquilibre entre enfants.

Interprétation

  • Seuil de vigilance couramment retenu : un ratio sleeps/gets supérieur à 1 % indique une contention significative sur ce latch.
  • Causes fréquentes : buffer cache trop petit pour la charge (trop de réutilisation de blocs « chauds »), un nombre de processus DB_WRITER_PROCESSES insuffisant, ou un petit nombre de blocs très sollicités concurremment (hot blocks — souvent des index séquentiels ou des tables de compteurs).
  • Un déséquilibre marqué entre enfants (certains à 0 %, d'autres très au-dessus du seuil) suggère un phénomène localisé plutôt qu'une saturation globale du cache — à corréler avec les segments/objets concernés via v$bh ou une trace ASH/AWR si disponible.

Voir aussi