Article
· Dec 11, 2024 2m read

Minimum IRIS container footprint

Sometimes customers need a small IRIS instance to do something in the cloud and shut it down, or they need hundreds of containers (i.e. one per end user or one per interface) with small workloads. This exercise came about to see how small an IRIS instance could be. For this exercise we focused on what is the smallest amount of memory we can configure for an IRIS instance. Do you know all the parameters that affect the memory allocated by IRIS ?

Memory Settings

These are the different buckets that affect memory allocation by IRIS and its corresponding parameters:

  • Global Buffers (32 MB) => Minimum seems to be 32 MB for 8k databases
  • Routine Buffers (26MB) => Theoretical minimum from the docs is 430 buffers x 64k per buffer ~ 26 MB and in practice is 26 MB
  • Journal Buffers (16 MB) => In theory and in practice, minimum for a Unicode system is 16 MB (8 MB for 8-bit)
  • Buffer descriptors (3 MB) => It seems to be 3 MB, not able to adjust
  • gmheap (16 MB) =>  Minimum is 256 pages x 64k per page = 16 MB (configured in bytes in the CPF = 16384)
  • ECP (1 MB) => There are a couple of parameters in the CPF that control this one. MaxServerConn and MaxServers. Even with MaxServerConn=0 and MaxServers=0 the minimum is 1 MB because IRIS allocates memory to those structures regardless of whether you use ECP or not. With MaxServerConn=1 and MaxServers=2 the default is 5 MB
  • Miscellaneous (15 MB) => By my tests the minimum seems to be 15 MB. I could not go below that.

With all these settings configured as such, the CPF parameters would look like the following:

globals=0,0,32,0,0,0
routines=0,0,0,0,0,26
jrnbufs=16
gmheap=16384
MaxServerConn=0
MaxServers=0

So if you configure IRIS with these parameters (I used IRIS 2024.1) in the CPF file, one could expect a total of 111 MB to be the minimum amount of memory to be allocated by IRIS at startup (user processes aside). You can see the memory allocated by IRIS in the messages.log file:

 

 

Well, I know, there must be some rounding going on because if you add all the individual numbers you get 109 MB but in the messages.log it gets reported as 111 MB.

During this process, we also discovered that IRIS containers could not allocate Huge pages, that was reported and fixed in subsequent versions by InterSystems.

By the way, this article can also serve as a general article to learn about the different memory parameters one can tweak inside IRIS to get better performance.

Hope you enjoy !

Discussion (0)1
Log in or sign up to continue