EVA ICS doesn’t use thread pools in core, number of threads is always fixed (except LM PLC macros), grows together with node configuration, and should be controlled by system administrator/integrator. Majority threads “sleep” until they get an event and don’t produce additional load.
After controller start, core launches several system threads (garbage collectors etc.), plus threads for each item:
- Two update threads (update scheduler + update processor) per each unit, sensor and lvar
- One action thread per each unit
- Two update threads for PHI module, if loaded with update=X parameter
- One notification queue thread for each notifier
- One thread for UC UDP API, one thread for UC SNMP trap handler (if enabled).
- LM PLC launches a single thread which handles queue for scheduled macro exections. After the execution, each macro has its own thread, number of threads for macros isn’t limited by PLC.
- Also, each LM PLC logic cycle has own thread as well
- If MQTT transport is used for API calls between nodes – one thread per API call (max lifetime = server.timeout)