Question

La vue Oracle V $ OSSTAT contient quelques statistiques d'exploitation, notamment:

  • IDLE_TICKS Nombre de centièmes de seconde pendant lequel un processeur est resté inactif, totalisé sur tous les processeurs
  • BUSY_TICKS Nombre de centièmes de secondes pendant lesquelles un processeur a été occupé à exécuter le code utilisateur ou le noyau, totalisés par rapport à tous les processeurs

La documentation que j'ai lue n'est pas claire quant à leur réinitialisation. Est-ce que quelqu'un sait?

Une autre question que je voudrais vous poser est la suivante: j'aimerais connaître la charge de processeur moyenne du système. Pour ce faire, je pense que je dois y aller:

busy_ticks / (idle_ticks + busy_ticks)

Est-ce correct?

Mise à jour du 08 novembre

Oracle 10g r2 inclut une statistique appelée LOAD dans ce tableau. Il fournit la charge actuelle de la machine au moment où la valeur est lue. C'est bien mieux que d'utiliser les autres informations car les données * _ticks sont "depuis l'instance start". pas au moment actuel.

Était-ce utile?

La solution

Vous devez inclure "IOWAIT_TICKS" s'ils sont disponibles.

  

IDLE_TICKS - Nombre de centièmes de   seconde qu'un processeur a été inactif,   totalisé sur tous les processeurs

     

BUSY_TICKS - Nombre de centièmes de seconde qu'un   le processeur a été occupé à exécuter   code utilisateur ou du noyau, totalisé   processeurs

     

IOWAIT_TICKS - Nombre de centièmes de seconde qu'un   processeur attend depuis I / O   complet, total conduit sur tous   processeurs

Voici une requête.

SELECT (select value from v$osstat where stat_name = 'BUSY_TICKS') /
(
   NVL((select value from v$osstat where stat_name = 'IDLE_TICKS'),0) +
   NVL((select value from v$osstat where stat_name = 'BUSY_TICKS'),0) +
   NVL((select value from v$osstat where stat_name = 'IOWAIT_TICKS'),0)
)
FROM DUAL;

À partir de la version 10.2, les noms _TICKS ont été changés en _TIME.

Les valeurs cumulatives dans les vues dynamiques sont réinitialisées lorsque l'instance de la base de données est fermée.

Voir Statistiques de performances automatiques et v $ OSStat pour plus d'informations .

Autres conseils

Je ne suis pas convaincu d'avoir besoin d'inclure USER_TICKS et SYS_TICKS.

La documentation de BUSY_TICKS indique:

"...been busy executing user or kernel code, totalled over all processors"

ce qui suggère que BUSY_TICKS inclut déjà USER_TICKS et SYS_TICKS.

Idem pour NICE_TICKS - il s’agit toujours du temps utilisateur (priorité moins élevée).

L'inclusion de IOWAIT_TICKS semble toutefois nécessaire.

Maintenant, réfléchissez-y: si mon but est d’avoir une idée de la charge globale de la machine, je serais probablement mieux d’inclure IOWAIT_TICKS dans le numérateur & amp; dénominateur, pour avoir une idée de la quantité de temps processeur non disponible pour mon travail.

SELECT (
(select value from v$osstat where stat_name = 'BUSY_TICKS') +
(select value from v$osstat where stat_name = 'IOWAIT_TICKS'))
/
(
   NVL((select value from v$osstat where stat_name = 'IDLE_TICKS'),0) +
   NVL((select value from v$osstat where stat_name = 'BUSY_TICKS'),0) +
   NVL((select value from v$osstat where stat_name = 'IOWAIT_TICKS'),0)
)
FROM DUAL;

Cela garantirait que si la machine avait un taux élevé de conflits d'entrées-sorties ou d'attentes IO, je ne serais pas trompé et ajouterait au problème en exécutant davantage de tâches.

Cela dépend de votre perspective. Sachant ce que vous recherchez, je pense que vous avez raison.

Vous avez raison concernant la valeur Occupé. J'ai vérifié l'un de mes systèmes et Occupé est égal à Utilisateur + Système.

J'ai également confirmé que Busy and Idle (Comptabiliser / Occupé) compte à tout moment sur mon système (mon système ne dispose pas d'IOWAIT).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top