- Visión general de Jelina
- EMS Builder
- Pruebas de rendimiento
Manual de pruebas de rendimiento de EMS Builder
Versión del manual: v1.1
Regla estadística actual: al muestrear por número de muestras, se añaden dos muestras de límite, una al principio y otra al final; los resultados oficiales solo utilizan las intermedias.
Estas pruebas no conectan contadores, PLC ni pasarelas serie reales: utilizan dispositivos Modbus TCP simulados. Los resultados representan la capacidad de procesamiento de Edge-EMS Builder en condiciones ideales de comunicación, no el rendimiento de extremo a extremo en campo.
1. Contenido de las pruebas
Sección titulada «1. Contenido de las pruebas»| Área | Pregunta que debe responderse |
|---|---|
| Adquisición | ¿Cuántos puntos por segundo puede procesar EMS Builder de forma estable? |
| Trigger | ¿Se ejecutan las tareas Lua según lo programado y con tiempos estables? |
| MQTT / coordinación | ¿Se alcanza la cantidad de tareas prevista? ¿Hay retrasos o fallos? |
| Almacenamiento | ¿Cómo afectan al rendimiento el almacenamiento en tiempo real y por cambios? |
| Recursos del sistema | ¿Se acercan CPU, memoria y disco a sus límites? |
| Estabilidad | ¿Hay caídas, reinicios o acumulación persistente durante ejecuciones prolongadas? |
2. Carga de prueba
Sección titulada «2. Carga de prueba»2.1 Trabajo simultáneo de EMS Builder
Sección titulada «2.1 Trabajo simultáneo de EMS Builder»| Carga | Contenido |
|---|---|
| Adquisición | Leer puntos de 20 dispositivos Slave simulados |
| Agregación | Calcular sobre datos adquiridos mediante Lua |
| Trigger | Ejecutar scripts Lua periódicos que generan escrituras, alarmas y acciones MQTT |
| Tareas MQTT | Generar y publicar mensajes periódicamente |
| Coordinación | Compartir datos y procesar coordinación entre dispositivos |
| Almacenamiento | Guardar datos adquiridos, resultados y registros de tareas |
2.2 Qué ejecuta cada script Lua de Trigger
Sección titulada «2.2 Qué ejecuta cada script Lua de Trigger»| Operación | Cantidad por ejecución | Función |
|---|---|---|
| Bucle de cálculo básico | 100 | Cálculos matemáticos, condiciones, bucles y operaciones de cadenas y tablas |
| Escritura de puntos originales | 2 | Escribir en los puntos de prueba 小数据0 y 小数据1 |
| Escritura de punto agregado | 1 | Escribir en el punto agregado de prueba Agg |
| Alarmas locales | 2 | Generar dos alarmas de nivel uno |
| Alarma MQTT | 1 | Generar una alarma MQTT de nivel dos |
2.3 Carga real por segundo
Sección titulada «2.3 Carga real por segundo»| Indicador | Cálculo | Por segundo |
|---|---|---|
| Ejecuciones de scripts Lua | Trigger: 50 de 1s + 5 de 100ms = 100/s; Mqtt: 50/s; agregación: 50/s; intercambio: 10/s |
210 |
| Iteraciones básicas de Trigger | 100 × 100 |
10.000 |
| Escrituras de puntos originales de Trigger | 100 × 2 |
200 |
| Escrituras de puntos agregados de Trigger | 100 × 1 |
100 |
| Alarmas locales de Trigger | 100 × 2 |
200 |
| Alarmas MQTT de Trigger | 100 × 1 |
100 |
| Todas las acciones de escritura de Trigger | 100 × 6 |
600 |
| Publicaciones MQTT | 50 × 1 |
50 |
| Agregaciones activadas por cambios de datos | 50 × 1 |
50 |
| Tareas de intercambio de datos | 10 × 1 |
10 |
3. Escenarios estándar
Sección titulada «3. Escenarios estándar»Cálculo:
Ejecuciones Trigger/segundo = cantidad de Trigger de 1s + cantidad de Trigger de 100ms × 10| Escenario | Puntos/s | Agregaciones | Trigger de 1s | Trigger de 100ms | Trigger/s | MQTT/s | Coordinación/s | Almacenamiento | Duración |
|---|---|---|---|---|---|---|---|---|---|
| S1 | 500 | 10 | 10 | 0 | 10 | 5 | 0 | Tiempo real | 30 minutos |
| S2 | 2.000 | 20 | 20 | 2 | 40 | 10 | 2 | Tiempo real | 30 minutos |
| S2.5 | 2.000 | 20 | 20 | 2 | 40 | 10 | 2 | Por cambios | 30 minutos |
| S3 | 5.000 | 30 | 50 | 4 | 90 | 20 | 10 | Tiempo real | 30 minutos |
| S3.5 | 5.000 | 30 | 50 | 4 | 90 | 20 | 10 | Por cambios | 30 minutos |
| S4 | 10.000 | 30 | 100 | 10 | 200 | 40 | 20 | Por cambios | 30 minutos |
| S5 | 20.000 | 40 | 200 | 10 | 300 | 60 | 40 | Por cambios | 30 minutos |
| S6 | 5.000 | 20 | 50 | 10 | 150 | 30 | 15 | Tiempo real | 72 horas |
| Modalidad de almacenamiento | Descripción |
|---|---|
| Tiempo real | Guarda cada adquisición según la configuración |
| Por cambios | Guarda inmediatamente al cambiar el valor; si no cambia, guarda al menos una vez cada 10 segundos |
S5 busca el límite de rendimiento. S6 debe ejecutarse realmente durante 72 horas.
4. Muestreo y reglas estadísticas
Sección titulada «4. Muestreo y reglas estadísticas»4.1 Muestreo por recuento
Sección titulada «4.1 Muestreo por recuento»Las pruebas cortas utilizan una cantidad fija de muestras. El siguiente ejemplo configura 1.002 muestras por escenario, separadas por 1 segundo, para conservar 1.000 muestras válidas. El informe AFE-E630 v1.3 utiliza 2.002 muestras y conserva 2.000 válidas:
Muestra 1: muestra de límite, excluidaMuestras 2–1001: muestras oficiales, 1,000 en totalMuestra 1002: muestra de límite, excluidaEl informe oficial debe filtrar raw_data mediante sample_no y excluir las muestras inicial y final. No debe utilizar directamente el resumen de todas las muestras de la hoja summary.
Para una prueba completa de 30 minutos con muestreo cada segundo, adquiere 1.802 muestras y analiza las 1.800 intermedias. Las 1.002 muestras de un ensayo corto no sustituyen las 72 horas de estabilidad de S6.
4.2 Recursos del conjunto de EMS Builder
Sección titulada «4.2 Recursos del conjunto de EMS Builder»Primero suma estos cinco servicios para cada sample_no; después calcula las estadísticas:
cb_corecb_nginxcb_backendems_backendems_postgresqlAEMS_CPU_raw(n) = suma de CPU de los 5 servicios con el mismo sample_noCPU del equipo de 4 núcleos(n) = AEMS_CPU_raw(n) ÷ 4Memoria de Edge-EMS Builder(n) = suma de memoria de los 5 servicios con el mismo sample_noEl informe debe incluir al menos media, P95, P99 y máximo. No sumes los máximos independientes de servicios que ocurrieron en momentos diferentes.
4.3 Trigger y MQTT
Sección titulada «4.3 Trigger y MQTT»Ordena trigger_per_sec y mqtt_per_sec cronológicamente y excluye también el primer y último intervalo de un segundo, evitando intervalos incompletos en los extremos de la consulta.
Los intervalos de tareas no necesariamente se corresponden uno a uno con las muestras de recursos. Puede haber segundos sin registros o tareas acumuladas que terminen juntas al segundo siguiente. Indica el número de intervalos válidos e incluye:
- Volumen medio procesado por segundo y porcentaje de cumplimiento del objetivo.
- Media, P50, P95 y P99 del
SpendTimemedio por segundo. - Máximo
SpendTimede una tarea individual entre todos los intervalos. - Número y proporción de segundos cuyo
SpendTimemedio supera 200 ms.
Si un segundo completo no tiene tareas, su volumen procesado cuenta como cero. No tiene latencia calculable y no debe inventarse un valor de 0 ms. Los scripts de supervisión posteriores deben indicar claramente inicio y fin de la ventana estadística para completar los segundos vacíos.
5. Indicadores observados
Sección titulada «5. Indicadores observados»| Categoría | Estadísticas necesarias |
|---|---|
| Adquisición | Puntos configurados, puntos correctos, fallos y descartes |
| Trigger | Cantidad objetivo y real, tiempo medio, P50, P95, P99 y máximo |
| MQTT / coordinación | Cantidad objetivo y real, duración y errores |
| CPU | Media, P95 y máximo del conjunto de EMS Builder |
| Memoria | Media, máximo y tendencia del conjunto de EMS Builder |
| Disco | Tasas de lectura/escritura, espera de E/S y estado de escrituras de base de datos |
| Modbus | Lecturas y escrituras, fallos, tiempos de espera agotados y reintentos por Slave |
| Estabilidad | Caídas, OOM, reinicios anómalos y acumulación persistente |
Cálculos principales:
Tasa de corrección = éxitos ÷ (éxitos + fallos + tiempos de espera agotados + descartes)
Cumplimiento = volumen medio real por segundo ÷ objetivo del escenarioSpendTime representa el tiempo real de ejecución de una tarea. Incluye P95, P99 y máximo además de la media para detectar retrasos largos ocasionales.
6. Evaluación de resultados
Sección titulada «6. Evaluación de resultados»Prevalecen el contrato y los criterios de aceptación del proyecto. Si no existen criterios específicos, utiliza estas referencias:
| Elemento | Criterio recomendado |
|---|---|
| Volumen procesado | Cumplimiento medio ≥ 99% |
| Tiempo de Trigger / MQTT | P95 < 200 ms |
| CPU | Media < 80% en equipos de 4 núcleos, sin saturación persistente |
| Memoria | Media del equipo < 70%, sin crecimiento persistente |
| Tasa de corrección | ≥ 99,99%, sin descartes sin explicar |
| Estabilidad | 72 horas continuas sin caídas, OOM ni reinicios anómalos |
| Recuperación | Recuperar estabilidad en 5 minutos tras reducir la carga |
6.1 Condiciones que invalidan la prueba
Sección titulada «6.1 Condiciones que invalidan la prueba»| Situación | Tratamiento |
|---|---|
| Duración insuficiente | Marcar como «Incompleta» |
| No participan los 20 Slave | Repetir la prueba |
| Escrituras concentradas en pocos Slave | Ajustar el reparto y repetir |
| Generador de carga o red como cuello de botella | Resolver y repetir |
| Faltan datos de éxito, fallo o tiempo de espera | Marcar como «Datos incompletos» |
| S6 no alcanza 72 horas | No declarar «Estabilidad superada» |
S4 y S5 son pruebas de estrés. Al alcanzar el límite del sistema, indica «Límite de estrés alcanzado» o «No recomendado para funcionamiento continuo»; no lo presentes como capacidad ordinaria validada.
Informes por modelo:
Documentación relacionada: