Nous avons tendance à croire que le paramètre « cpu_count »
de la base de données permet de restreindre le nombre de processeurs que la
base de données peut utiliser, et ce n’est évidemment par le cas. On doit s’en
remettre à d’autres fonctionnalités telles qu l’ « Instance caging »
disponible avec Oracle Database Entreprise Edition 11g Release 2.
Instance Caging est un outil permettant de gérer et de
limiter l’utilisation de processeurs par base de données. L’ « Instance
caging » est particulièrement intéressant car il protège les bases de
données qui se partagent des ressources d’être impacter par une base de données
dont des processus exigeant et gourmand s’approprient l’ensemble des ressources
et, qui a pour effet d’ébranler tous les systèmes desservis par celles-ci.
Une stratégie pour déterminer le nombre de processeurs par
instance est d’activer l’ « instance
caging » puis de surveiller l’utilisation des processeurs par l’instance.
Ceci peut être fait via cette requête :
select to_char(begin_time,
'HH24:MI') time,
max(running_sessions_limit) cpu_count,
sum(avg_running_sessions)
avg_running_sessions,
sum(avg_waiting_sessions)
avg_waiting_sessions
from v$rsrcmgrmetric_history
group by begin_time
order by begin_time;
Grâce aux résultats obtenus lors de l’exécution de la requête,
on peut se baser sur ceci :
·
Si la valeur de la colonne « avg_running_sessions »
est fréquemment inférieure à la valeur du « CPU_COUNT », cela nous
indique que nous pouvons diminuer la valeur de « CPU_COUNT » sans
impacter la performance.
·
Si la valeur de la colonne « avg_waiting_sessions »
est constamment supérieure à la valeur du « CPU_COUNT » et que le
temps réponse est en deçà des attentes, ceci indique que le CPU_COUNT est
possiblement insuffisant et que la performance peut être accrue en augmentant
sa valeur, en autant qu’il en a de disponible.
Après quelques jours, vous aurez des statistiques sur lesquelles
vous pourrez vous baser pour restreindre le nombre de processeurs utilisés par
une instance.
Pour la mise en place de l’ « instance caging »,
il suffit de faire ceci :
SQL> ALTER
SYSTEM SET CPU_COUNT = 8 SCOPE=SPFILE;
SQL> ALTER
SYSTEM SET RESOURCE_MANAGER_PLAN = 'DEFAULT_PLAN' SID=’*’ SCOPE=’BOTH’;
En utilisant le plan par défaut d’Oracle Resource Manager, il
n’y aura pas d’impact car il n’y a aucune limitation.
Prendre note qu’il est mention de processeurs dans ce texte
mais si vous avez des processeurs de type « Hyper-Threading », la
valeur de « cpu_count » correspond plutôt à un nombre de « threads ».
La vue V$RSRCMGRMETRIC_HISTORY affiche l'historique des statistiques d'Oracle Resource Manager qui proviennet de la vue V$RSRCMGRMETRIC. Seulement la dernière heure est conservée. Cette vue fournit des informations sur l'utilisation des ressources et les temps d'attente par groupe de consommateur.
Vous pouvez consulter le lien ci-dessous. Il traite aussi de l'instance caging :
http://www.oracle-base.com/articles/11g/instance-caging-to-manage-cpu-usage-in-oracle-database-11gr2.php
La vue V$RSRCMGRMETRIC_HISTORY affiche l'historique des statistiques d'Oracle Resource Manager qui proviennet de la vue V$RSRCMGRMETRIC. Seulement la dernière heure est conservée. Cette vue fournit des informations sur l'utilisation des ressources et les temps d'attente par groupe de consommateur.
Vous pouvez consulter le lien ci-dessous. Il traite aussi de l'instance caging :
http://www.oracle-base.com/articles/11g/instance-caging-to-manage-cpu-usage-in-oracle-database-11gr2.php