0

In the psf_memory and opf_memory we give percentage of the memory pool that we want to be available for these two facilities. However, it is still unclear how to control the memory pool itself. I understand it changes with number of allowed connections, but is there some way to simply give it a concrete value, or in other words tell Ingres to use fixed number of gibibytes as the memory pool?

DejanLekic
  • 18,787
  • 4
  • 46
  • 77

1 Answers1

1

In the psf_memory and opf_memory we give percentage of the memory pool that we want to be available for these two facilities.

Not quite. There's more than one memory pool. opf and psf are two and there are others.

opf_memory and psf_memory are the sizes of those pools. They are derived parameters and as such are calculated from other parameters. To see them in CBF you have to choose the 'Derived' menu item when in 'Configure DBMS'. The primary value they derive from is, as you say, connected sessions. However as with all derived parameters you can change them directly if you wish. If you do so then it's a good idea to protect them to stop them getting re-calculated when something else changes.

The percentage parameters - opf_maxmemf and psf_maxmemf - are the amount of memory a single session is allowed. So if your opf_memory is 120M but opf_maxmemf is 50 then no single session can use more than 60M of opf memory (50% of 120M).

You can look at the rules that are used to derived parameters, they are in the *.crs files in $II_SYSTEM\ingres\files. For example in dbms.crs you'll see:

ii.$.dbms.$.opf_memory:         20M + (256K * ii.$.dbms.$.opf_active_limit),
                            MIN = 1M, SIZETYPE;

Which means that opf_memory caculate to 20M + 265K for each active session - opf_active_limit - which itself is derived from connect_limit. There's a minimum value of 1M and it's a SIZETYPE value (integer) - which means that if you set it yourself CBF won't let you put in a smaller value or a decimal.

HTH Paul

PaulM
  • 446
  • 2
  • 12