How to determine the BICSUITEMEM

Skip to first unread message

Pablo Maldonado

Feb 28, 2019, 10:25:54 AM2/28/19
to schedulix

I wanted to know how or what I should have in mind to calculate a correct size of the BICSUITEMEM parameter.

Should I take into account the History and HistoryLimit parameters?

Thank you

Pablo Maldonado

Ronald Jeninga

Mar 1, 2019, 3:06:38 AM3/1/19
to schedulix
Hi Pablo,

though it is true that the server parameters influence the memory usage, it is hard to derive a rule.
If you configure the server to keep 3 months of job executions in memory, this will almost certainly require a lot of memory in most installations.
But if you only submit one Job per month, you'd be even happy with the default of 300MB.

The better method is to watch the memory usage and to adjust it according to your observations.
There are 3 values in the output of "show system;":

MEM_USED: That's the amount of memory currently in use. It will start with half the memory configured in the java.conf file.
MEM_FREE: That's the amount of memory that is currently free.
MEM_MAX: That's the configured value

Hence the ratio between MEM_USED and MEM_FREE shows us if the server is currently happy with its amount of memory.
I'd estimate that if MEM_FREE is below 10% of MEM_USED, it is likely that Java will soon allocate more memory.
If MEM_USED equals MEM_MAX, Java won#t be able to allocate more.

The parameter is perfectly OK as long as MEM_USED < MEM_MAX or MEM_USED * 0.6 < MEM_FREE < MEM_USED * 0.25.
If you have enough memory available, larger numbers are safer (of course).

If the server runs out of memory it'll start being unresponsive at first (too many Java garbage collections) and will crash soon after.
The scrolllog process will immediately restart the server, but the basic problem remains.
If you don't have more memory available, you'll have to reduce the History to avoid the problematic behaviour.
Adding memory will be the better measure.

Now watching the memory usage is something that Nagio can do as well.
Just a 

echo "show system;" | sdmsh | grep "MEM_"

will give you the 3 values of interest.
And if MEM_USED == MEM_MAX && MEM_USED * 0.25 > MEM_FREE you'll have to issue an alert.
(You'll have to find the optimal threshold yourself; 0.25 might not be optimal for you). 

Best regards,

Reply all
Reply to author
0 new messages