“Is a Mac Mini a good server for ten users?” = “how long is a piece of string.”
The number of users is a poor proxy for deciding how many resources you’ll need for your FileMaker Server; there is a huge difference between 10 users just reading data or ten users pounding away, creating records, and running summary reports.
Add that to the design patterns and architectural choices made by the developer that can cause one solution to perform worse than another (such as the over-use of unstored calcs and summaries, wide tables, busy layouts, lack of proper theming, etc.).
Add it all up, and picking a good server to run your solution is a bit of a dark art; it is a task that is made difficult because of the sheer number of variables involved.
“All things being equal;
- Is FileMaker Server 19 faster than 18, in what areas?
- Is FileMaker Server on Linux faster than on Windows?
- What is the effect of faster cores? Or more cores?
- What effect is there if I increase the FileMaker Server cache?
- How much impact is there if I use an SSD, and what operations become quicker?”
Punisher is a tool that I built to help me figure out how FileMaker Server works and help me determine which deployment choices make a bigger impact for any given solution.
Punisher abstracts out the effect of the client’s processing power or the client-to-server network speed/latency; it only tests the server’s capabilities. Punisher also abstracts out any design choice differences between different solutions; it always runs the exact same tests, just on different hardware configurations.
Punisher tests the speed of FileMaker Server by spawning simultaneous (concurrent, parallel) PSoS sessions that run through a collection of scripts that run the gamut of the different types of operations your solutions would typically do: some scripts are heavy on database operations (record creation, record edits, sorting, etc.), other scripts are heavy on the computational resources available, and then some use import and export to tax the disk i/o.
Punisher is available as an open-source project on GitHub:
We are looking forward to your feedback on thoughts on how to improve it. Report your ideas on GitHub or find us on community.claris.com.
13 thoughts on “Introducing Punisher”
This looks like a wonderful tool. Thank you for sharing.
I am soo excited to try this tool out. Have been looking for solutions for why our in-house server with all the amazing hardware is soo slow
Looks great, I have to try it
Sorry to say but it works only if you have the English date format in your computer.
Hi Marco, feel free to raise an issue on GitHub and let us know which parts don’t work. We’ve put the main file up as a clone to try and avoid international date/number issues. But let us know where it fails and we can tackle it.
If you are using a Spanish system, just edit the “_Date_convertTS” custom function like this:
//FMTSFormat = “mm/dd/yyyy hh:nn:ss” ;
FMTSFormat = “dd/mm/yyyy hh:nn:ss” ;
Thanks for pointing this out!
In Belgium — Dutch format — I would have a similar issue, it would read as “dd/mm/yyyy hh:mm:ss”.
Yes, that solves the issue – editing the custom function. Also, for dd/mm/yyyy date formatting, make sure that you set the locale on the server to align to this format. I notice that for example AWS Windows Server instances that you can buy on the AWS Marketplace have by default the US formats.
Thank you for great tool!
Please add some warning if none of scripts are selected to test.
I have tested this on a Mac Mini M1 and would like to send you the results.
From the ‘Server config’ screen I have exported -Export Config & Runs’- a .json file. Should I send you this file?
Sure, zip it up and send it over: email@example.com
I should become the Geekbench of Filemaker. To that end, it should upload results to you, so you could put up a Geekbench browser type wesbite with Punisher
Not a bad idea 🙂
In the meantime you can export the test runs and either email them to me or import into your own ‘central’ copy. There is a button “export found set” on the Test Runs layout that will produce a Json file with all the relevant data. On the “Configs” layout is a button to import them.