Parameter to Set Maximum Memory Usage for 64bit

Related products: FME Form

It would be helpful if FME 64 bit had a work space parameter that limited the total memory that can be used by that work space. This would allow users to more easily run multiple work spaces that are RAM intensive without causing failures due to memory issues. I run several work spaces in Amazon environments with 60+GB of available RAM and I have had issues where one work space will consume over 59GB on one transformer which in turn causes my other work spaces to fail. I have particularly found the SpatialFilter and Intersector transformers to be some of the most aggressive RAM consumers. Thus it would be useful to be able to set limits on either the work space itself or even on individual transformers on the amount of RAM that can be consumed.

You can already control it to some extent, but it isn't very well documented. For a good explanation, see the answer from @1spatialdave here: https://knowledge.safe.com/questions/21538/adjusting-memory-resoruces.html


Hi David, I read the thread you referenced and the links provided there in. The material posted by @1spatialdave applies to FME Server and Engine settings. I am using FME Desktop and have not found an equivalent parameter to tweak. Perhaps I am missing something? In reference to the other suggestions in the thread, I am using a very large temp drive and I do split my features when appropriate as well as order my readers and writers to try and maximize performance but I still run into issues with work space RAM consumption.

 

Related threads I visited:

 

https://knowledge.safe.com/questions/2273/fatal-insufficient-memory-available-error-code-was.html

 

https://knowledge.safe.com/articles/176/fme-temp-environment-variable.html

 


It does actually apply to FME Desktop as well, it's just not very well documented. Here's how to insert the setting into the workspace header:'

 

 

'

 

 

The value should be between 0.1 and 1.0

 

 


OK, so I found the right hack through this post..

If this is something which shall be kept on low level, leave it as is.

Anyhow it took me about 1/2h to find this article, and I still don't know how to check all possible MACROs known to FME :-(


Recently I've seen a situation where an engine consumes a lot of memory on a system affecting the ability of the other engines to run properly, causing errors. It would be good to be able to configure each engine with a memory range it can operate with in.

Ex. Engine 1 Max Mem: 80GB, Engine 2 Mac Mem: 4GB, Engine 3 Max Mem: 4GB (total system memory available might be 100GB)

This would give flexibility to have one engine that could consume upto 80GB of 100GB of the available RAM, while the other engines are set to process smaller jobs and have the ability consume 4GB of RAM. You could then use job routing to pass the ferocious memory eating (fme) jobs to the 80GB limit engine while other jobs could be passed to the other engines.

This has come up a second time with another user as a question. I'm sure this would be welcomed configuration to be able to set on a multi-engine system and tame those fme jobs. :)