Cálculo de la utilización del procesador

0

Estoy usando un procesador Cortex M3 en una placa LPC1769 . Para esta situación particular, todos los procesos ocurren dentro de interrupciones. Por lo tanto, dentro del "bucle" principal no hay nada que procesar. Quiero calcular la utilización del procesador; sin embargo, no estoy completamente seguro de cuál es el mejor método para hacerlo.

Mi idea original era tener una variable que se incrementa en cada ciclo de reloj donde no se ejecuta una interrupción no . Luego puedo usar la siguiente ecuación una vez por segundo.

$$ processorUtilisation = \ frac {totalExpectedTickets - counted Ticks} {totalExpectedTickets} * 100 $$

Sin embargo, no estoy completamente seguro de si esa es una solución adecuada principalmente porque no puedo ver una manera de tener un incremento variable en cada ciclo de reloj.

¿Alguna otra sugerencia?

    

1 respuesta

0

El contador de ticks no tiene que aumentar en cada ciclo, solo tiene que saber cuántos ciclos toma cada tick. Luego puede multiplicar countedTicks por cyclesPerTick para obtener el número de ciclos.

Calcular el número de ciclos por tic puede ser complicado, ya que depende de las instrucciones que genere el compilador. Una forma podría ser realizar un solo paso a través del código de la máquina en un depurador o simulador, teniendo en cuenta el número de ciclos utilizados por bucle. Sin embargo, si el caché o los estados de espera están involucrados, esto podría no ser exacto.

Para obtener un valor de tiempo de ejecución, puede desactivar temporalmente las interrupciones del proceso y contar el número de tics que se producen en 1 segundo para obtener totalExpectedTicks , luego dividirlo en la frecuencia de reloj del procesador para obtener cyclesPerTick (o, ya que La respuesta que desea es solo un ratio , solo puede trabajar en tics y no preocuparse por la cantidad de ciclos que representan.

    
respondido por el Bruce Abbott

Lea otras preguntas en las etiquetas