Skip to main content

What is the optimal number of FME Engines? Should I use multiple machines?

What an excellent question and one we receive quite often!! You are planning your system architecture, budget, hardware, etc and you need to know exactly what is required. The reality is that your conditions will be quite unique compared to others and that makes it very hard to say. If I'm pressed, I will probably say 42, but a better answer follows.


How FME Engines Work

Let's say we need to do the following:

  • Run 6 data processing workflows (jobs)

If we have a single FME Engine, we can run 1 job and then 5 jobs will be queued for later. If we add 1 more FME Engine, then we can process 2 jobs at the same time. So, if we have 6 FME Engines, we can process 6 jobs at the same time.

1 FME Engine = 1 job processed

6 FME Engines = 6 jobs processed (concurrently)


Deciding on the Number of FME Engines

Your data, required transformations, system resources are unique and will produce a unique time required per job. In addition, you may have requirements on how many jobs need to be run per hour or minute. These all impact how many FME Engines you need. We provide proof-of-concept licenses to help you evaluate this.

Here is a nice neat (over-simplified) formula:

number of FME Engines = number of jobs you'd like done in an hour / number of jobs an engine can do in an hour


Dealing with System Resources

Let's make this a bit more real world and consider the impact of system resources like memory, processing power, I/O, etc. Imagine that jobs require much more time to process and system resources are limited.

Assume we know that:

  • A job takes 1 hour to run.
  • We want to run 1 job per hour.
  • The FME Engine uses around 2 GB of memory while the job runs.
  • The machine where the FME Engines are installed has 4GB of memory.

In this example, there is no problem with system resources as 1 FME Engine will use only 50% of the memory

Setup: 1 machine with 1 FME Engine

More Jobs

Later on we decide:

  • We need to run 2 jobs per hour.

If a job were to take 50% of the systems resources, then running 2 jobs on 2 FME Engines will take 100% of the system resources. The 2 jobs will run at the same time and finish at the same time.

Setup: 1 machine with 2 FME Engines

Beyond Capacity

Later on we decide:

  • We need to run 6 jobs per hour.

And we still observe:

  • A job takes 1 hour to run.
  • The FME Engine uses around 2 GB of memory while the job runs.
  • The machine where the FME Engines are installed has 4GB of memory.

So, for sure we need to attempt to run 6 jobs at the same time, which means 6 FME Engines. However, the existing machine's system resources are fully used by 2 FME Engines.

What are the options?


Non-Scaling1. Let Jobs Queue

If 6 jobs are submitted and 2 FME Engines are available, 2 jobs will be started and 4 will be queued for later. You may need to reconsider the number of jobs required per hour based on what you can achieve. Perhaps 6 jobs in 3 hours is okay.

Setup: 1 machine with 2 FME Engines

2. Improve the Processing

The FME Workspace contains readers, writers and transformers that control how the job works. There are definitely more and less efficient ways to create a workspace. Take a look at the log file to determine where the most time is being taken. Search the Knowledge Center for lots of tips and tricks. However, it's likely that you won't get large enough performance gains to eliminate the need for scaling.

Setup: 1 machine with ? FME Engines

3. Add FME Engines

If 2 jobs on 2 FME Engines take all the system resources (memory, CPU, I/O), then running 6 jobs on 6 FME Engines will cause conflicts over system resources. This means that the jobs will run slower. This might be okay if there is no other acceptable option.

Setup: 1 machine with 6 FME Engines

Scaling1. Upgrade the Machine

You can upgrade the machines components to provide additional resources (vertical scaling). If the machine has more memory, then those memory intensive jobs will likely run faster too. This is a great option in cloud computing where machine virtual hardware can be upgraded in seconds. FME Cloud offers this functionality.

Setup: 1 big machine with 6 FME Engines

2. Use Additional Machines

You can install FME Engines on multiple machines to provide additional processing capacity (horizontal scaling). To be clear, there is still only one central FME Server Core install.

Setup: 3 machines with 2 FME Engines per machine.


Indeed excellent question! but I like the answer more ...:)


my question: cannot find any reference on safe website / documentation.

FME Server 64-bit, each Engine memory capacity/need, how many cores does and engine uses

My understanding Engine = 4Gb and 1 core, but does it use more core on 64-bit


my question: cannot find any reference on safe website / documentation.

FME Server 64-bit, each Engine memory capacity/need, how many cores does and engine uses

My understanding Engine = 4Gb and 1 core, but does it use more core on 64-bit

Hi @rudy_v. As this is an old question, and you have a new question, I would generally suggest asking your question as a new one, to ensure that it is seen and receives a response. As your question was brought to my attention, I'll try to find someone to respond to it. Thanks

 


my question: cannot find any reference on safe website / documentation.

FME Server 64-bit, each Engine memory capacity/need, how many cores does and engine uses

My understanding Engine = 4Gb and 1 core, but does it use more core on 64-bit

Hi @rudy_v, in 64bit you are not limited to 4GB. The FME Engines will manage the available system memory and use it to a safe limit. We recommend a core per FME Engine.

 


Reply