High-Performance Ignition Gateway Install

I've not done much with "custom" setups for Ignition gateways, but I know that you can change the gateway memory allocation.

What other things can I do to help Ignition run better/smoother? Ignition will be basically the only thing running on this machine so I want to give it as many resources as possible.

The most impactful changes you can make as an end user are garbage collection related; giving your system more memory or tweaking the GC itself.

If you're on 8.1.33 or higher, you could try ZGC, which optimizes for throughput.

Or just read through this document:
https://docs.oracle.com/en/java/javase/17/gctuning/introduction-garbage-collection-tuning.html#GUID-326EB4CF-8C8C-4267-8355-21AB04F0D304

1 Like

Opposite; ZGC optimizes for low latency collection pauses at the expense of throughput, G1 is the throughput king still.

1 Like

And it can support relatively low latencies (sub 50ms) into some rather extreme workloads.

So how would I add a garbage collector to the Ignition gateway machine? I know nothing about them.

I see G1 Young Generation and Old Generation on the gateway performance overview page. What does that mean?


(this is a fresh gateway install, so no memory use yet)

It already has one, G1 by default.

You can specify a different collector in the "additional parameters" section of ignition.conf.

ZGC can be enabled with -XX:+UseZGC.

Honestly though, this is probably not something you should actually be messing with unless you're willing to do detailed measurement and analysis.

https://wiki.openjdk.org/display/zgc/Main#Main-Configuration&Tuning

Ok. Thanks

If you want to make Ignition run smoother and better, install it on Linux, on real hardware, and make sure it has enough memory allocated to it for whatever your application is. Put the database on a different server.

3 Likes

That's what I advocated for (minus Linux), but it's not our decision in the end. Client's IT manages that. Database will be on a different VM on the same server. Each will have 4 cores and 16 GB RAM. I've upped the memory allocation to 6 GB.

That's not enough for even a medium workload. Ignition can use many more cores, and should be given them. (I give my driver testing VMs 12GB of ram and 8 cores. Just for driver testing.)

Laughs nervously in 2 cores. On the bright side I got them to give me 16gb ram.

I'm figuring 10k tags and ~25 devices falls into the 'light' category of work loads, correct? (We do have plans to expand). Would you recommend 8 cores as the bottom line minimum, regardless?

Well the system I'm replacing/upgrading is currently running ok with the default 2 GB RAM on an FX-6200 with SQL running on the same machine (I actually hadn't looked at this until now :joy:).

Yes, that's fairly light. As long as there's only one or two Perspective clients, and no extreme charting going on.

No, my driver testing, with the whole lab running at once, can be close to a million tags (5 second polling). That keeps that VM very busy indeed.

Consider monitoring your CPU load over the busiest time of day. I recommend the idle CPU should represent two or three cores of capacity. (Avg 50% load on a four-core system, 75% load on an eight-core system. A bit more leeway on really big systems.)

Edit: I should mention that if you have no native drivers (everything is MQTT or OPC client connections), your need for low latency is much reduced. It is no accident that Cloud Edition has no drivers.

1 Like