Matthew Waddingham · May 26

Overhead and memory settings for multiple instances of Cache

We've traditionally run a selection of development environments from a single cache instance using different namespaces for DEV TEST PREP etc. This has come with a few drawbacks, mainly that you then cant break down into namespaces per environment and everything is sharing various options.

Is there a massive overhead to running multiple cache instances from the same 'box' instead?

How best to share the memory setup in that situation, we usually pre-define around 80% for the instance, do we just share that evenly between the multi instance scenario?

Product version: Caché 2018.1
1 0 8 82
Log in or sign up to continue

Hello Matthew,

Out of curiosity, what are some examples of things that you don't want shared within one instance?

I'm not sure about the per-instance overhead, I don't know how common of a scenario that is, so you may want to test it out. With multiple instances, you would have multiple write/journal daemons. I wonder if your current setup benefits from the shared buffer pool, or if your separate namespaces are handling totally different sets of data.

Re: the memory split, I think that depends on how much activity you're running through each instance. If you think they'll all need the same amount of memory, an even split might be fine.

Is there any consideration to splitting out to separate servers? It sounds like isolation/granularity are some of the things you are looking for, and separate servers would help with that.

At present, each namespace is an entirely separate self contained system. We'd like each to better represent being like the live setup so that apps in development and testing environments behave how they would when going live if you see what I mean. Maybe a scaled down test would be the best approach to see if it has any major problems.

I have 21 instances of Cache running on a single server.

There are a lot of pluses: simpler cpf, database snapshots, easier downtime negotiations

I would manually specify memory since you likely have very few simultaneous users.

Here is a link Sizing System Memory for Caché

Switch to Docker will have much more pluses in your case.

That sounds quite hopeful, do they communicate between each other out of interest?

Yes, the instances interconnect and share files.

If you currently have running instance with all the namespaces together, for some time, you may look at ^GLOBUFF, to see how your global buffers used by now, and decide how to split that buffer for each instance.