Pregunta

La vista de Oracle V $ OSSTAT contiene algunas estadísticas operativas, que incluyen:

  • IDLE_TICKS Número de centésimas de segundo que un procesador ha estado inactivo, totalizado en todos los procesadores
  • BUSY_TICKS Número de centésimas de segundo que un procesador ha estado ocupado ejecutando el código de usuario o kernel, totalizado en todos los procesadores

La documentación que he leído no ha sido clara en cuanto a si alguna vez se restablecen. ¿Alguien sabe?

Otra pregunta que tengo es que me gustaría calcular la carga promedio de CPU que está experimentando el sistema. Para ello espero que tenga que ir:

busy_ticks / (idle_ticks + busy_ticks)

¿Esto es correcto?

Actualizar 08 de noviembre

Oracle 10g r2 incluye una estadística llamada LOAD en esta tabla. Proporciona la carga actual de la máquina en el momento en que se lee el valor. Esto es mucho mejor que usar la otra información, ya que los datos de * _ticks son " desde el inicio de la instancia " no a partir del punto actual en el tiempo.

¿Fue útil?

Solución

Deberás incluir 'IOWAIT_TICKS` si están disponibles.

  

IDLE_TICKS - Número de centésimas de un   segundo que un procesador ha estado inactivo,   totalizado en todos los procesadores

     

BUSY_TICKS - Número de centésimas de segundo que un   procesador ha estado ocupado ejecutando   Código de usuario o kernel, totalizado sobre todos   procesadores

     

IOWAIT_TICKS - Número de centésimas de segundo que un   el procesador ha estado esperando que la E / S   completa, total led sobre todo   procesadores

Aquí hay una consulta.

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;

En la versión 10.2 y posteriores, los nombres _TICKS se han cambiado a _TIME.

Los valores acumulativos en las vistas dinámicas se restablecen cuando se cierra la instancia de la base de datos.

Consulte Estadísticas de rendimiento automático y v $ OSStat para obtener más información .

Otros consejos

No estoy convencido de que deba incluir USER_TICKS y SYS_TICKS.

La documentación para BUSY_TICKS indica:

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

lo que sugiere que BUSY_TICKS ya incluye USER_TICKS y SYS_TICKS.

Lo mismo para NICE_TICKS, que sigue siendo tiempo del usuario (solo una prioridad más baja).

Sin embargo, parece probable que sea necesario incluir IOWAIT_TICKS.

Ahora que lo pienso, si mi propósito es tener una idea de la carga total de la máquina, probablemente sea mejor que incluya IOWAIT_TICKS en el numerador & amp; denominador, para tener una idea de la cantidad de tiempo de CPU no disponible para mi trabajo.

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;

Esto aseguraría que si la máquina tuviera una alta tasa de contención o espera de IO, no me engañaría y agregaría más problemas al ejecutar más trabajos.

Depende de tu perspectiva. Sabiendo lo que buscas, creo que lo tienes bien.

Usted tiene razón sobre el valor Ocupado. Marqué uno de mis sistemas y Ocupado es igual a Usuario + Sistemas.

También confirmé que la cuenta Ocupada e Inactiva para todo el tiempo en mi sistema (mi sistema no tiene IOWAIT).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top