The Oracle TimesTen 18.1 In-Memory Database uses Shared Memory to store its data.
Shared Memory resources such as shared memory segments and sempahores are operating system kernel resources and need to be configured.
On supported Linux platforms, you need to configure the following values in the /etc/sysctl.conf file:
For example, on a Linux machine with a 4KB page size and 64 GB RAM, a 48 GB shared memory segment, SHMALL as 56 GB and supporting 20K connections would require:
# 60129542144 / 4096 = 14680064 [4K pages]
# SEMMSL = 21000 [20K connections + some extras]
# SEMMNS = (SEMMSL * SEMMNI)
# SEMOPM = 2000
# SEMMNI = 2560
Using Linux HugePages has three benefits:
To configure HugePages, you need to know:
The number of HugePages = shmmax [in MB] / page size [in MB].
eg, for a small DEV machine with 8 GB RAM:
Add the following to the /etc/systcl.conf file:
Then persist those values in the Linux kernel:
# sudo /sbin/sysctl -p
Then check the actual configured value of hugepages:
# cat /proc/meminfo|grep HugePages
You may need to free memory and/or reboot the machine to be able to allocate the desired number of HugePages.
On AIX, semaphores are configured dynamically by the kernel so you just need to focus on large pages.
You cannot allocate all of a machine's RAM to be shared memory:
The following table is an estimate of possible shared memory sizes given a fixed amount of RAM:
TimesTen cannot use all of the shared memory for data, it also needs to use shared memory for:
There is a formula to estimate how much memory will be available for data:
Disclaimer: These are my personal thoughts and do not represent Oracle's official viewpoint in any way, shape, or form.