Memory Configuration omero.jvmcfg

Hi all,

We are setting up a production OMERO server on a physical server with 128GB RAM memory (4x32GB).
Here is our memory configuration on the OMERO.server:

omero config set omero.jvmcfg.system_memory 128000
omero config set omero.jvmcfg.percent.blitz 30
omero config set omero.jvmcfg.percent.pixeldata 30
omero config set omero.jvmcfg.percent.indexer 20

and the result of the omero admin jvmcfg command:

JVM Settings:

============

blitz=- Xmx14400m -XX:MaxPermSize=1g -XX:+IgnoreUnrecognizedVMOptions # Settings({‘percent’: ‘30’, ‘system_memory’: ‘128000’})
indexer=- Xmx9600m -XX:MaxPermSize=1g -XX:+IgnoreUnrecognizedVMOptions # Settings({‘percent’: ‘20’, ‘system_memory’: ‘128000’})
pixeldata=- Xmx14400m -XX:MaxPermSize=1g -XX:+IgnoreUnrecognizedVMOptions # Settings({‘percent’: ‘30’, ‘system_memory’: ‘128000’})
repository=- Xmx4800m -XX:MaxPermSize=1g -XX:+IgnoreUnrecognizedVMOptions # Settings({‘system_memory’: ‘128000’})

We are wondering why the JVM settings output does not correspond to the percentage used?
i.e for the Blitz memory, 128000*30% =38400, so why do we get Xmx14400m instead of Xmx38400m?
Is something missing in our OMERO.server configuration to make it use all the available RAM memory (128GB)?

Also, I saw in this topic some explanations on how blitz, pixeldata and indexer make use of memory:

Would you have recommandations on what percentages to use on a 128GB server? Would for example 50% Blitz, 30% PixelData and 20% Indexer be a good start?

All the best,
Claire

Hi Claire,

you need to set omero config set omero.jvmcfg.max_system_memory 128000.
omero.jvmcfg.system_memory only overrides the amount of system_memory java detects and at least for my config did not seem to affect the amount of memory omero actually used

//
Julian

2 Likes

Answering this question, I think these percentages/values are good starting points for a general server. For reference, these are the configurations of the UoD OMERO servers used for teaching or research as well as the demo server.

Obviously there is room for adjustment although this will be highly dependent on the type of data modality you are expecting to load into your server. Taking the case of IDR, we have decided to completely turn off the PixelData service meaning the JVM memory can be reallocated elsewhere. The counterpart is that we are requesting for large imaging data to be stored and submitted in a pyramidal file format.

1 Like