Oracle SE2 : lecture de la limite de CPU avec d.side

par | Mar 6, 2024 | Trucs et Astuces

Consommation de CPU par Oracle

L’écran principal de d.side permet de suivre en temps réel la consommation globale de CPU de nos instances Oracle.
Pour cela nous disposons de plusieurs indicateurs répartis sur 3 zones différentes de cet écran. Exemple :

1 – L’instance DSIDE est hébergée sur une machine nommée “dside” qui dispose de 12 CPUs.
La base est en version Oracle 19c Standard Edition.

2 – Comme on a ici en moyenne 6 sessions actives “Average Active Sessions”, et que l’instance ne consomme que de la CPU, cela signifie qu’on a en permanence 6 CPUs d’utilisées. Ces 6 CPUs rapportées au nombre total de CPUs disponibles (12) représentent donc 50% des capacités de la machine. C’est ce que nous indique le “DB CPU usage” à 48%, car 5.82 CPUs sont utilisées sur les 12. Ce DB CPU correspond à la consommation Oracle pour l’instance DSIDE que nous suivons ici. Sur la machine il peut tourner d’autres programmes ou d’autres instances, pas uniquement cette instance Oracle. Dans ce cas la partie “Host CPU usage” peut avoir une valeur supérieure. On observe ici que la machine est utilisée à 52%. Cela revient à dire que quasiment la seule activité sur cette machine est imputable à notre instance Oracle.

3 – La courbe “Global Activity” récapitule la consommation de CPU et les attentes sur chaque intervalle de 5 secondes. Ici on n’observe quasiment que du vert dans cette courbe, ce qui correspond à la CPU. Cela signifie qu’il n’y a quasiment pas d’attentes ou que celles-ci ne sont pas pénalisantes. En effet on devine un peu de rouge au-dessus du vert, qui correspond à la classe d’attente “Concurrency” (ce que confirme d’ailleurs la liste “Wait Events” au-dessous de la courbe), mais dans une mesure qui n’est pas comparable à la consommation de CPU, qui reste ici l’élément le plus important.
La courbe “Global Activity” est visualisée sur une échelle de “CPU limit” dans la liste déroulante. Cela signifie que le maximum visible dans la courbe correspond au nombre de CPUs de la machine. On voit ainsi facilement dans ce graphe que la moitié des ressources CPU sont utilisées, et qu’on a donc de la marge avant d’atteindre le trait du haut qui matérialise la limite physique des 12 CPUs.

Oracle Standard Edition SE2 CPU thread limit

Pour sa Standard Edition SE2, Oracle stipule que :

« each Oracle Database Standard Edition 2 database may use a maximum of 16 CPU threads at any time. When used with Oracle Real Application Clusters, each Oracle Database Standard Edition 2 database may use a maximum of 8 CPU threads per instance at any time. »

En standalone, une instance peut donc utiliser jusqu’à 16 CPU threads, et dans un cluster RAC chacune des instances peut utiliser jusqu’à 8 CPUs. Et ces limites sont indépendantes des capacités réelles de la machine qui héberge les instances.

Cela signifie, si l’on reprend notre précédent exemple, que lorsque l’on consomme 6 CPUs sur un noeud qui n’a le droit qu’à 8 threads au maximum, on n’est plus à 50% de la capacité autorisée. On reste bien à 50% de la capacité totale de la machine mais cela ne nous importe plus vraiment, car on ne pourra utiliser en SE2 que 8 des 12 CPUs de cette machine.

Voici donc la vision que nous choisissons d’afficher, basée non plus sur les 12 CPUs de la machine mais sur les 8 CPUs que nous impose la Standard Edition SE2 :

1 – Les informations concernant la base à laquelle nous sommes connectés ne changent pas : Oracle 19c Standard Edition sur une machine pouvant mettre 12 CPUs à disposition de ses utilisateurs.

2 – La charge reste identique, nous n’avons pas modifié le trafic Oracle, on observe donc toujours 6 sessions actives en moyenne, et une machine chargée à environ 50%. Ce qui change en revanche, c’est la limite haute avec laquelle nous traitons ces valeurs. Car si on a toujours environ 5.9 CPUs d’utilisées, correspondant aux 6 sessions actives, on ne rapporte plus cette consommation aux 12 CPUs totales mais aux 8 CPUs maxi que nous autorise la Standard Edition SE2. On passe ainsi de 6/12 = 50% de “DB CPU usage” à 6/8 = 75% de “DB CPU usage”.

De même, la limite haute est désormais bien matérialisée par un trait horizontal correspondant à 8 CPUs maxi, plus à 12. On voit alors bien que la consommation de CPU par Oracle, en vert, est plus proche de la limite. Il apparaît plus clairement ici que notre activité a moins de marge pour consommer davantage.

Comment d.side gère Oracle Standard Edition SE2

Une option “Apply SE restrictions to CPU usage” dédiée à Oracle Standard Edition SE2 est désormais disponible dans les préférences utilisateur.

Par défaut, cette option n’est pas activée. Si l’on souhaite en profiter il suffit de se rendre dans le menu “Options / Preferences”, puis dans l’onglet “Standard Edition” de cocher l’option “Apply SE restrictions”. De plus, les valeurs “CPU threads limit” pour standalone et pour RAC sont ajustables. Toutefois, les valeurs par défaut sont celles décrites dans l’offre Oracle : une limite de 16 CPU threads est proposée pour une base standalone, et de 8 CPU threads pour une base en RAC.
Si cette option est activée, une fois qu’on est connecté à une Standard Edition, l’affichage correspond alors à ce qui a été présenté ci-dessus.

Remarque : même si elle est activée, cette option est ignorée lorsque l’on se connecte à une instance Oracle tournant en Enterprise Edition.