Skip to main content

El consumo de memoria de mi aplicación IEC está aumentando.

Preparativos:

Necesita un sistema de ejecución en el que CmpMemGC el componente está activado y activo. Puede comprobar si este componente está cargado en el registro de tiempo de ejecución.

Solución de problemas

Si observa efectos extraños después de un cierto tiempo de funcionamiento de su aplicación IEC (como la pérdida del estado de la licencia o que no se puede asignar memoria nueva), esto podría deberse a una pérdida de memoria.

Debe investigar estos efectos y encontrar el origen del problema.

CODESYS Dispositivo de memoria Trace

Esta función está disponible en los sistemas de ejecución versión SP19 (SL versión 4.9.0.0) y superiores. Se puede usar

  1. Habilite la configuración en el entorno de ejecución.

    1. Detenga el tiempo de ejecución mediante Deploy Tool.

    2. Conéctese a su sistema objetivo mediante putty u otro cliente SSH.

    3. Abra el archivo de configuración del entorno de ejecución con un editor de texto (por ejemplo, nano):

      sudo nano /etc/codesyscontrol/CODESYSControl.cfg
    4. En el CmpMemGC sección, añada la entrada EnableMemTrace=1.

      [CmpMemGC]
      EnableMemTrace=1
    5. Guarda y cierra el archivo.

    6. Reinicie el tiempo de ejecución mediante Deploy Tool.

  2. Agregue el rastreo del dispositivo a su CODESYS proyecto (donde se produce este problema).

    1. En el árbol de dispositivos, haga clic con el botón derecho en el dispositivo.

    2. Haga clic Agregar objetoRastreo de dispositivos.

      El DeviceTrace el objeto se inserta debajo del controlador.

      El Rastreo del dispositivo se muestra la pestaña.

    3. Haga clic en RastrearCargar Trace comando.

      El Rastros en línea del dispositivo 'Codesys_Control_for_Linux_SL' se abre el cuadro de diálogo.

    4. Si no puede encontrar el MemgcTrace , entonces la configuración del paso 1 no está configurada correctamente. Si su controlador no es compatible con el mecanismo, utilice una de las dos opciones siguientes para el diagnóstico.

      _rtsl_img_iec_memory.png
    5. Seleccione el MemgcTrace entrada y clic Cargar y cerrar cuadro de diálogo.

      El rastro de la memoria (MemGCTrace) se añade al DeviceTrace.

    Para obtener más información, consulte: Comando: Upload Trace

CODESYS Biblioteca: SysMem

También puede acceder a la información interna mediante programación. Puede acceder a la descripción general actual de toda la RAM o memoria acumulada asignada a través de las funciones de la biblioteca IEC

SysMem.SysMemGetCurrentHeapSize()

Este valor se puede usar para observar el tamaño actual del montón. Puede observar este valor o escribirlo en una traza

Esto puede ayudarle a determinar si el aumento de la memoria asignada se basa en el tiempo con otros eventos de su aplicación IEC.

Línea de comandos de Linux

Si tiene acceso a la consola de Linux (por ejemplo, a través de un cliente SSH), también puede comprobar el comportamiento de la memoria.

Hay varias herramientas y comandos para lograrlo:

htop//arriba

Se trata de herramientas gráficas para analizar los procesos (y subprocesos) de un sistema Linux.

Casi todas las distribuciones de Linux proporcionan estas herramientas, por lo que puede instalarlas fácilmente a través de apt o dnf o la gestión de paquetes de la distribución.

htop 
# or 
top

Ambas herramientas se pueden usar para ver los hilos en una vista de árbol y para analizar los CODESYS el proceso de ejecución y sus subprocesos. Cada tarea de IEC es una pthread dentro del proceso de ejecución.

En la herramienta htop, puede personalizar la vista mediante F2 (menú de configuración): le recomendamos que habilite el Tree view y Show custom thread names opciones.

En el área superior, puede habilitar la vista en árbol con la combinación de teclas Turno + V y, por lo tanto, consulte el uso de la CPU y el uso de la memoria por subproceso. Esto puede ayudarle a determinar si el aumento de la memoria asignada se debe al tiempo debido a otros eventos en su aplicación IEC, o si se trata de una pérdida de memoria