La mejor manera de medir uso de CPU

      2 Comments on La mejor manera de medir uso de CPU

Hoy vamos a hacer algunos ejercicios y demostraciones que nos permitan discernir la mejor manera de medir el uso de CPU en nuestros equipos.
A raíz de estas pruebas, vamos a hacer una nueva versión de la función Get-ProcessPerf.

Vamos a necesitar:

La idea es muy simple. Cargar nuestro CPU con CPUStres y comparar las diferentes mediciones que hace cada herramienta o método.

En este ejemplo, vemos que al menos en Windows 7, todas las herramientas gráficas con las que contamos, miden muy bien el uso de de CPU por parte del proceso CPUSTRES 75% aprox. En el caso del Performance Monitor, fíjense que el valor promedio es 301. Si tenemos en cuenta que en este equipo tengo 4 procesadores, entonces el total es 400 y un calculo de porcentaje nos da 75% aprox.

Aquí vemos algunos valores un poco particulares. Primero, notamos que si usamos la clase WMI Win32_PerfFormattedData_PerfProc_Process (la hemos utilizado en la versión vieja de Get-ProcessPerf), vemos que el valor es 100. Este comportamiento es debido a que esta clase usa un calculo “cocinado” de la misma clase, pero RAW (crudo en ingles). Lamentablemente este calculo fue hecho para un solo CPU y no se tuvo en cuenta multiprocesadores.
Esto no se condice con la realidad y nos puede generar alguna confusión, dependiendo que tan precisos necesitamos ser. Quizás nos sirva como indicativo, pero no refleja bien los verdaderos valores.

En el segundo caso, usamos Get-Counter para que nos traiga el uso de CPU usando los contadores de performance como si estuviéramos usando Performance Monitor. Es importante entender que estos valores son calculados con dos muestreos crudos. Es realmente muy preciso, y con tan solo hacer una regla de tres simple, podemos obtener el mismo 75% que conseguimos con las herramientas gráficas; sin embargo, he visto que a veces no refresca rápido la lista de procesos actuales y tampoco esta disponible para Windows 2003 y para algunos como yo, es un problema porque incluso hoy en día lidiamos con esta versión “no soportada” de Windows.

El tercer caso a priori asusta un poco, pero una vez que entendemos que esos valores son en Nano-segundos y que la misma clase WMI Win32_PerfRawData_PerfProc_Process trae las propiedades necesarias para armar la formula que nos arroja el porcentaje preciso de uso de CPU, sera una excelente opción. El hecho que sea soportada en Windows 2003 y que sea muy veloz también, hacen que elijamos esta opción para armar la nueva versión de Get-ProcessPerf

Aquí vemos claramente que tomando dos muestreos con diferencia de 1 segundo y aplicando la formula de calculo nos da exactamente 77% uso de CPU, tal cual registrábamos con las herramientas gráficas y con Get-Counter.

Formula de calculo: ((($N2-$N1)/($D2-$D1))* 100) / $CPUnumber), donde:

N2 = PercentProcessorTime del muestreo2
N1 = PercentProcessorTime del muestreo1
D2 = TimeStamp_Sys100NS del muestreo2
D1 = TimeStamp_Sys100NS del muestreo1
CPUNUMBER = Numero de CPU’s lógicos del equipo

En la próxima entrega, vamos a armar la nueva versión de Get-ProcessPerf utilizando Win32_PerfRawData_PerfProc_Process 

Espero que les haya aclarado las dudas y que el articulo les sirva para elegir el método que mejor les parezca y así armar sus herramientas.

Saludos!

Mauro.

 

 

Leave a Reply

2 Comments on "La mejor manera de medir uso de CPU"

Notify of
avatar
Sort by:   newest | oldest | most voted
Diego
Guest

Muy bueno !!! Super explicado, Gracias don Mauro!

Carlos
Guest

Excelente Mauro! Muy bueno

wpDiscuz