Hi,
I have been using Ignition on a Windows and Linux OS for over a year now. When I run Ignition Designer/ Client the CPU usage shoots up to 80 % and RAM usage shoots up to 4GB from “Java™ Platform SE binary” and "Java™ Web Launcher (32-bit) " due to Ignition alone.
This makes my system practically unusable.
The project are simple HMI screens with MySQL based charts.
Questions:
Is there a way to avoid such a situation ?
Is there a way to dedicate a CPU core for Ignition alone ?
System Details:
Ignition : 7.9.3/4 Trial License
CPU - Intel core i5 - 4200 CPU @ 1.6Ghz (2015)
RAM : 8 GB DDR3
OS : Windows 10 / Ubuntu 16.04
In my experience, this type of pathological behavior has always been caused by infinite loops of property changes, where a propertyChange script fires, sets a value elsewhere that produces a chain of events that fire the original script, and around it goes again.
Often, such event loops will produce recursion depth exceeded errors. But regardless, you need to add logging to your event scripts to see when they are running.
As for dedicating a core, that would have to be done from the OS, not from within Ignition. In linux, see the cpuset utility. But this would just be a band-aid over the real problem, and wouldn’t help with the memory usage, and would likely cause Ignition to freeze entirely.
4 Likes
Hi,
The system I have during which I observe this condition has only one Project running on the Gateway and the project is just a display of 10 tags and 4-5 buttons.
I have observed such high CPU usage on Complex projects and on Servers with just a single simple project too.
Also this typically happens when I connect to multiple OPC-UA servers.
Is it the gateway service consuming the CPU, or a client project running on the gateway? What happens if you don’t have any client running? And then what happens if only one client is running, but on a different machine?
Sorry for the delay,
I don’t have the exact answer for that. I’ll run some tests and get back!
Also make sure that everything that can run on the gateway is set up with memory limits so the total is less than the physical memory. If you a running a little gateway with 4G of ram, and you give Ignition 2G, you can’t allow anything else to use more than about ~1G (like any client), or you’ll push the gateway into swap, which will then thrash.
Also consider configuring your gateway with the G1GC garbage collector, as described here. In my experience, not only does latency improve, but the gateway’s average memory utilization drops.
3 Likes