What is this?

This is basically where I write down stuff that I work with at my job as a GIS Technical Analyst (previously system administrator). I do it because it's practical for documentation purposes (although, I remove stuff that might be a security breach) and I hope it can be of use to someone out there. I frequently search the net for help myself, and this is my way of contributing.

Sunday, December 13, 2020

FME Desktop 2020 on Mac with a M1 Apple Silicon CPU

I recently purchased the new MacBook Pro with an Apple Silicon M1 chip. The reviews were overwhelmingly positive, and it is indeed a very snappy computer. So naturally I had to download FME Workbench to see how it would perform. Unfortunately, no native ARM version is available yet, so I installed the regular Intel-version and ran FME using Rosetta 2. At first it seemed to run fine - the GUI is snappier than it is on my Intel-based MacBook Pro and all my existing workflows ran successfully. They did run a little slower than before so I decided to run some benchmarks.

I made a simple but quite heavy workflow which reads 2.7 million points and 1.9 million polygons from ffs-files into a PointOnArea-transformer. The output is written to a ffs-file.

I ran the same test on three different computers:

  • A MacBook Pro 2020 M1 with 16 GB RAM
  • A MacBook Pro mid-2018 Core i5 with 16 GB RAM
  • Dell Precision 5530 Core i7-8550H/32 GB RAM/Windows 10 

The first run revealed that the Dell computer performed considerably slower than the Intel MacBook Pro. The M1 MacBook was the slowest and logged several dozen memory optimization messages, and one warning:
Failed to free sufficient memory to reach the process usage limit. To improve stability and performance please increase the memory available to FME. Available memory can be increased by adding physical RAM, increasing swap space, or closing other applications”.
 
For the second run I reduced the number of features to 1 million points and 1 million polygons. The result was pretty similar. The Intel MacBook Pro finished first, the Dell computer second and the M1 MacBook finished last, again logging the same memory optimization messages.
For the last run I reduced the number of features to 500.000 points and 500.000 polygons. This time the MacBook M1 logged no memory optimization messages or warnings and finished the job first.


2.7m points / 1.9m polygons

1m points / 1m polygons

500k points / 500k polygons

MacBook Pro M1 2020/16 GB RAM

08:41

03:55

01:28

MacBook Pro Intel Mid-2018/16 GB RAM

05:52

02:48

01:37

Dell Precision 5530 Core i7-8550H/32 GB RAM/Windows 10

06:28

03:00

01:49



It looks like memory handling is different when FME is running under Rosetta 2 than on an Intel-based Mac. The M1 MacBook is fast, but only as long as it doesn´t need to allocate a lot of RAM. I was also surprised to see that my Intel MacBook performed better than the Dell Computer. Especially since the Dell has twice as much memory and has a considerably faster CPU (Core i7-8550h vs Intel Core i5-8259U)

At the end of the FME log there is a memory report. It will typically say something like:

ProcessID: 6148, peak process memory usage: 17665760 kB, current process memory usage: 12742080 kB

I was surprised to find huge variations in the reported memory usage on the three computers. The numbers were somewhat inconsistent, but the M1 MacBook consistently reported the highest memory usage.

2.7m points / 1.9m polygons

1m points / 1m polygons

500k points / 500k polygons

MacBook Pro M1 - Peak Process

15573792

28169392

17354848

MacBook Pro M1 - Current Process

14468256

27471152

17354848

MacBook Pro Intel - Peak Process

10300832

8471528

2722304

MacBook Pro Intel - Current Process

6980372

8424136

106428

Dell Precision 5530 - Peak Process

11074092

5357116

2723420

Dell Precision 5530 - Current Process

154464

119492

107260



It would be interesting to hear if SAFE Software have any comments on this, and if they have done similar tests. I’m certainly looking forward to the universal executable of FME Desktop.

If anyone else would like to try the same workflow - it is available here.