none
Carga excesiva en la CPU RRS feed

  • Pregunta

  • Buenos días; 

    Primero gracias por la ayuda que me podáis prestar. 

    Os comento cual es la situación.

    Estoy desarrollando un software en VB .NET. La función principal de este software es la gestión y grabación de tarjetas rfid para funcionar con dispositivos offline (autonomos), en este caso lectores instalados en cerraduras. Estas tarjetas se graban con un grabador de sobremesa con conexion USB al PC.

    El caso que he integrado un dispositivo online al sistema, este dispositivo online esta configurado dentro de la red en la que también esta el PC donde esta instalado el software. La funcionalidad de este dispositivo online es actualizar/grabar la tarjetas rfid sin necesidad de acceder al PC donde esta instalado el software. Esta grabación se hace remotamente y en tiempo real, mandado instrucciones al PC desde el dispositivo online y viceversa.

    Normalmente todo funciona correctamente hasta que sin saber porque la carga de la CPU empieza a aumentar en el proceso del software y tras pocos minutos aparece un mensaje, "El programa dejo de funcionar". Por lo que se cierra el software y el dispositivo online deja de funcionar. 

    Cuando la carga de la CPU aumenta la comunicación con el dispositivo online es correcta, se realiza la grabación de la tarjeta de forma completa pero si que vemos que disminuye la velocidad. 

    La pregunta en realidad seria la siguiente:

    ¿Porque de repente la carga de la CPU aumenta sin control y cierra el software? 

    ¿Donde reside el problema? En la gestión de instrucciones que se envían y reciben, en la capacidad general del PC,...

    Saludos y muchas gracias.

      

    miércoles, 21 de enero de 2015 8:11

Todas las respuestas

  • Lo primero, verifica si la carga de CPU es debida a tu programa o a otro proceso en el mismo equipo. usa el Task Manager para listar los procesos por orden de CPU, a ver si es tu programa el que se está comiendo la CPU (en su lugar podría ser, por ejemplo, un "driver" defectuoso el que esté consumiendo los ciclos de CPU).

    Si efectivamente el problema está en tu programa, lo siguiente sería determinar en qué parte del programa se produce el problema. Para eso, ruédalo dentro del Visual Studio con la opción de "Profiling" activada (si no me equivoco esto requiere un Visual Studio "de pago", con la edición Express creo que no viene). El profiler toma periódicamente una instantánea del Stack para determinar en qué lugar del código se encuentra la ejecución en ese momento, y al final muestra una estadística inicando en qué partes del programa se consumió más tiempo. Esto debería darte una idea de qué es lo que está haciendo tu programa cuando aumenta su consumo de CPU.

    miércoles, 21 de enero de 2015 10:02
  • Buenos días Alberto; 

    Lo primero gracias por tu respuesta. 

    Comentarte que a través de el administrador de tareas, veo que el proceso de mi software es el que esta generando más carga de trabajo en la CPU cuando empieza a ir mal. Si el software va bien, esta carga de trabajo es de 1%. Lo revisaré con task manager como me comentas.  

    El caso es que puede funcionar bien durante dos días  y empezar a consumir mucha CPU, empezar a ir lento y finalmente cerrar el software. 

    No se si es el software el que genera la carga de la CPU y que vaya lento o la carga de la CPU y la lentitud de la red hacen que vaya mal el software. 

    Por otra parte, he estado mirando la opción profiling que me comentas y la verdad es que la versión del Visual Studio que utilizo no tiene esta opción. 

    ¿Sabrías de algún otro programa que pudiese recoger estos datos cuando se ejecuta un programa en concreto?

    Saludos. 

    miércoles, 21 de enero de 2015 10:34