# High-Performance Ignition Gateway Install

**URL:** <https://forum.inductiveautomation.com/t/high-performance-ignition-gateway-install/83770>\
**Category:** Ignition\
**Tags:** ignition81\
**Created:** [January 3, 2024, 10:29pm UTC](https://forum.inductiveautomation.com/t/high-performance-ignition-gateway-install/83770 "2024-01-03T22:29:24Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![amarks](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarks/32/45610_2.png) [@amarks](https://forum.inductiveautomation.com/u/amarks)\
**Post date:** [January 3, 2024, 10:29pm UTC](https://forum.inductiveautomation.com/t/high-performance-ignition-gateway-install/83770/1 "2024-01-03T22:29:24Z")

</div>

I've not done much with "custom" setups for Ignition gateways, but I know that you can change the [gateway memory allocation](https://docs.inductiveautomation.com/display/DOC79/Changing+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.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [January 3, 2024, 10:41pm UTC](https://forum.inductiveautomation.com/t/high-performance-ignition-gateway-install/83770/2 "2024-01-03T22:41:02Z")

</div>

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](https://docs.oracle.com/en/java/javase/17/gctuning/introduction-garbage-collection-tuning.html#GUID-326EB4CF-8C8C-4267-8355-21AB04F0D304)

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [January 3, 2024, 10:50pm UTC](https://forum.inductiveautomation.com/t/high-performance-ignition-gateway-install/83770/3 "2024-01-03T22:50:38Z")

</div>

> [@paul-griffith](#):
>
> you could try ZGC, which optimizes for throughput.

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

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 3, 2024, 10:53pm UTC](https://forum.inductiveautomation.com/t/high-performance-ignition-gateway-install/83770/4 "2024-01-03T22:53:41Z")

</div>

> [@Kevin.Herron](#):
>
> G1 is the throughput king still.

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

---

<div class="post-metadata">

**Author:** ![amarks](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarks/32/45610_2.png) [@amarks](https://forum.inductiveautomation.com/u/amarks)\
**Post date:** [January 3, 2024, 10:54pm UTC](https://forum.inductiveautomation.com/t/high-performance-ignition-gateway-install/83770/5 "2024-01-03T22:54:46Z")

</div>

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?

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/a/2/a27451650bc6bda3cad26208edaa24a2d811d6cb.png)  
(this is a fresh gateway install, so no memory use yet)

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [January 3, 2024, 10:57pm UTC](https://forum.inductiveautomation.com/t/high-performance-ignition-gateway-install/83770/6 "2024-01-03T22:57:58Z")

</div>

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](https://wiki.openjdk.org/display/zgc/Main#Main-Configuration&Tuning)

---

<div class="post-metadata">

**Author:** ![amarks](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarks/32/45610_2.png) [@amarks](https://forum.inductiveautomation.com/u/amarks)\
**Post date:** [January 3, 2024, 10:58pm UTC](https://forum.inductiveautomation.com/t/high-performance-ignition-gateway-install/83770/7 "2024-01-03T22:58:32Z")

</div>

Ok. Thanks

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [January 3, 2024, 10:59pm UTC](https://forum.inductiveautomation.com/t/high-performance-ignition-gateway-install/83770/8 "2024-01-03T22:59:08Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![amarks](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarks/32/45610_2.png) [@amarks](https://forum.inductiveautomation.com/u/amarks)\
**Post date:** [January 3, 2024, 11:01pm UTC](https://forum.inductiveautomation.com/t/high-performance-ignition-gateway-install/83770/9 "2024-01-03T23:01:10Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 3, 2024, 11:06pm UTC](https://forum.inductiveautomation.com/t/high-performance-ignition-gateway-install/83770/10 "2024-01-03T23:06:27Z")

</div>

> [@amarks](#):
>
> Each will have 4 cores

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.)

---

<div class="post-metadata">

**Author:** ![ryan.white](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan.white/32/73193_2.png) [@ryan.white](https://forum.inductiveautomation.com/u/ryan.white)\
**Post date:** [January 3, 2024, 11:10pm UTC](https://forum.inductiveautomation.com/t/high-performance-ignition-gateway-install/83770/11 "2024-01-03T23:10:52Z")

</div>

> [@pturmel](#):
>
> 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?

---

<div class="post-metadata">

**Author:** ![amarks](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarks/32/45610_2.png) [@amarks](https://forum.inductiveautomation.com/u/amarks)\
**Post date:** [January 3, 2024, 11:13pm UTC](https://forum.inductiveautomation.com/t/high-performance-ignition-gateway-install/83770/12 "2024-01-03T23:13:20Z")

</div>

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 😂).

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 3, 2024, 11:24pm UTC](https://forum.inductiveautomation.com/t/high-performance-ignition-gateway-install/83770/13 "2024-01-03T23:24:57Z")

</div>

> [@ryan.white](#):
>
> 10k tags and ~25 devices falls into the 'light' category of work loads

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

> [@ryan.white](#):
>
> Would you recommend 8 cores as the bottom line minimum, regardless?

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.
