Como calcular% de CPU com base em pulsos de CPU brutos no SNMP

1

De acordo com o link ssCpuUser , ssCpuSystem , ssCpuIdle , etc são preteridos em favor das variantes cruas ( ssCpuRawUser , etc).

Os valores anteriores (que não cobrem coisas como nice, wait, kernel, interrupt, etc) retornaram um valor percentual:

The percentage of CPU time spent processing user-level code, calculated over the last minute.

This object has been deprecated in favour of 'ssCpuRawUser(50)', which can be used to calculate the same metric, but over any desired time period.

Os valores brutos retornam o número "bruto" de pulsos que a CPU gastou:

The number of 'ticks' (typically 1/100s) spent processing user-level code.

On a multi-processor system, the 'ssCpuRaw*' counters are cumulative over all CPUs, so their sum will typically be N*100 (for N processors).

Minha pergunta é: como você transforma o número de ticks em porcentagem?

Ou seja, como você sabe quantos ticks por segundo (normalmente - o que implica nem sempre - 1 / 100s, o que significa 1 a cada 100 segundos ou que um tique representa 1 / 100th de um segundo).

Eu imagino que você também precisa saber quantas CPUs existem ou você precisa buscar todos os valores da CPU para adicioná-los todos juntos. Eu não consigo encontrar um MIB que lhe dá um valor inteiro para # de CPUs, o que torna a rota antiga inábil. A última rota parece não ser confiável porque alguns dos números se sobrepõem ( às vezes ). Por exemplo, ssCpuRawWait tem o seguinte aviso:

This object will not be implemented on hosts where the underlying operating system does not measure this particular CPU metric. This time may also be included within the 'ssCpuRawSystem(52)' counter.

Alguma ajuda seria apreciada. Em todos os lugares parece apenas dizer que% está obsoleto porque pode ser derivado, mas não encontrei nenhum lugar que mostre a maneira padrão oficial de realizar essa derivação.

O segundo componente é que esses "ticks" parecem ser cumulativos, em vez de ao longo de algum período de tempo. Como faço para amostrar valores ao longo de algum período de tempo?

A informação final que eu quero é:% de usuário, sistema, ocioso, legal (e idealmente roubar, embora não pareça haver um MIB padrão para isso) "atualmente" (nos últimos 1-60s provavelmente ser suficiente, com uma preferência por períodos de tempo menores).

    
por Bo Jeanes 11.10.2012 / 21:35

0 respostas