Saltar al contenido

Monitorear el uso de CPU usando WMI


mjrofra

Recommended Posts

publicado

Hace poco me encontré con Windows Management Instrumentation (WMI), que permite, entre muchas otras cosas, monitorear la memoria, procesadores, tareas, etc.

CPU.png

Su uso es bastante sencillo. Para su demostración, he adapatado un archivo en el que se monitorea el uso de CPU en el computador, mostrando una gráfica como la que muestra el Administrador de tareas. El archivo no tiene mayor aplicación, es sólo una demostración de lo que se puede lograr con WMI y un poco de carpintería en VBA para graficar los datos que se van obteniendo.

EXCELPATAS: Monitorear el uso de CPU usando WMI

publicado

Hola Mauricio:

Parece interesante, pero me da error (Error 13. No coinciden los tipos) en esta línea:

            arrTemp = Application.Index(arrPerfCPU, lngCol)[/CODE]

Saludos

publicado

Esta chulo y se ve que es potente.

La unica pega es el consumo de recursos, con el adjunto cerrado tengo el 98% de recursos CPU disponibles y con el ejemplo funcionando tengo solo 20% disponible, aun que se que es solo un ejemplo y se le pueden sacar mas aplicaciones.

Ahora, y solo para hacer la gracia, no recomiendo usar eso par monitorear, seria como usar una maquina que mide las pulsaciones de tu corazon pero el requisito para que la maquina funcione es subirse, ponerse a correr y obtener los resultados al rato 180ppm xD.

Saludos!

publicado

Hola,

he tratado de reponder antes pero tengo muchas fallas en mi conexión a Internet y se me cae constantemente.

Macro, Gerson, en un principio me ha constado reproducir el error. He probado el archivo en cuatro pc distintos y en todos me ha funcionado. Aclaro, en todos los casos los probé con Windows 7 y Excel 2010. Una prueba adicional con Windows XP y Excel 2003 me arrojó errores, en especial en cuanto al gráfico. De una vez aclaro :), la macro no corre en Excel 2003 por el manejo de la gráfico, no he tenido ahora el tiempo de reescribir el código para hacerla compatible.

En cuanto al error, finalmente y aunque no estoy seguro, me parece que se da porque el WMI devuelve un valor Null. He subido un nuevo archivo que debe corregir esto (igual no funciona en Excel 2003 por el manejo de la gráfico, espero arreglar esto algún otro día).

Por otro lado, grandísima alegría ver y poder saludar al maestro Elías (Saile). Ojalá tuvieramos aportes más frecuentes (que he visto que se ha distanciado un poco del foro) de uno de los más grandes que ha pisado por acá.

Santi (verzulsan), en todo de acuerdo contigo. Sería una tontería usar esto para medir en tiempo real el uso de la CPU. Lo dicho, era sólo para demostrar y dejar una referencia a lo que se puede hacer con WMI. Sin embargo, no creo que consuma tantos recursos como aparenta, en realidad creo que esto se debe más a todo lo otro que hace la macro. Es más, con sólo cambiar el application.wait por la llamada a la API sleep, se liberán en mi caso casi el 30% de los recursos (pasa de usar casi el 70% total a más o menos el 40%). En realidad intuyo que no es muy demandante en recursos y que si eliminaramos todo el código que hace la gráfica y carga los datos y todo esto, el consumo de recursos sería mínimo sólo llamando a WMI.

Siendo breve y lo más importante, muy agradecido con todos ustedes por comentar y probar el archivo. He subido un nuevo archivo verificando que no pasen valores null al array (que me parece que es lo que causa el error mencionado por Macro y Gerson) y usando la llamada API a la función sleep de Windows, en lugar de application.wait (lo que parece que aligera un poco el Script).

publicado

OK. Ya funciona. Interesante, me lo guardo.

Yo también echo de menos las charlas sobre aportes, pero es que cada vez hay menos.

Saludos

publicado

Hola Mauricio, tu última versión ejecutada en Excel 2010 consume menos del 8% con Windows XP por lo que se puede comparar con el Administrador de Tareas de Windows (le doy de nota un 8). Cuando tenga tiempo la probaré en Win7.

Tengo un Excel 2003 que en la línea:

Set wbemServices = GetObject("winmgmts:\\" & strNombrePC)

me da: Error 429: ActiveX component can't create object

pero es un problema de instalación.

Santi, saludos de uno que cada vez le cuesta más llegar a todo lo que se propone.

publicado

mjrofra este aporte es muy novedoso (claro como siempre viene de ti) solo para despejar la duda, en aquel momento lo probe con 2003 y Wxp, pero (hasta hoy que he podido entrar al foro) probe con 2010 (en casa) y funciona perfecto, considero que puede ser util en otras circunstancias (dentro de una aplicacion en excel)

Saludos

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.