Pergunta

A visão da Oracle V $ OSSTAT detém algumas estatísticas operacionais, incluindo:

  • IDLE_TICKS Número de centésimos de segundo que um processador tenha sido ocioso, totalizaram mais de todos os processadores
  • BUSY_TICKS Número de centésimos de segundo que um processador tenha sido ocupado executando usuário ou código do kernel, totalizaram mais de todos os processadores

A documentação que eu li não foi clara quanto a saber se estes são sempre repor. Alguém sabe?

Outra questão que tenho é que eu gostaria de trabalhar para fora a carga da CPU média do sistema está experimentando. Para fazer isso espero que eu tenho que ir:

busy_ticks / (idle_ticks + busy_ticks)

É este correto?

Atualização de 08 de novembro

Oracle 10g R2 inclui uma estatística chamada CARGA nesta tabela. Ele fornece a carga atual da máquina como no momento o valor é lido. Isto é muito melhor do que usar as outras informações como os dados * _ticks é "desde exemplo start" não como do ponto atual no tempo.

Foi útil?

Solução

Você vai precisar incluir 'IOWAIT_TICKS` se eles estiverem disponíveis.

IDLE_TICKS - Número de centésimos de segundo que um processador tenha sido ocioso, totalizaram mais de todos os processadores

BUSY_TICKS - Número de centésimos de segundo que um processador tem sido ocupado executando usuário ou do kernel de código, totalizaram mais de tudo processadores

IOWAIT_TICKS - Número de centésimos de segundo que um processador tem estado à espera de I / O completo, total levou mais de tudo processadores

Aqui está uma 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;

Em 10.2 e mais tarde os _TICKS nomes foram alterados para _time.

Os valores acumulados em exibições dinâmicas são repostas quando a instância do banco de dados é desligado.

automática Desempenho Estatísticas v $ OSStat para mais informações .

Outras dicas

Não estou convencido eu preciso incluir USER_TICKS e SYS_TICKS.

A documentação para BUSY_TICKS afirma:

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

o que sugere que BUSY_TICKS já inclui USER_TICKS e SYS_TICKS.

Mesmo para NICE_TICKS - que ainda é tempo do usuário (apenas prioridade mais baixa).

Incluindo IOWAIT_TICKS parece provável que seja no entanto necessário.

Venha para pensar sobre isso, se meu objetivo é ter uma noção de carga geral da máquina, eu provavelmente estaria melhor incluindo IOWAIT_TICKS no numerador e denominador, para ter uma noção da quantidade de tempo de CPU não está disponível para o meu trabalho.

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;

Isto assegura que se a máquina tinha uma alta taxa de IO contenção ou em espera, eu não seria enganar e gostaria de acrescentar para o problema, executando mais empregos.

Depende da sua perspectiva. Saber o que você está depois, eu acho que você tem direito.

Você está correto sobre o valor ocupado. Eu verifiquei um dos meus sistemas e está ocupado igual ao usuário + Sys.

Eu também confirmou que conta Ocupado e Inativo por todo o tempo no meu sistema (o meu sistema não tem iowait).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top