I have a oracle linux 7 running Pentaho (an java application). This machine has 23 GB of ram and improve pentaho performance I'm trying to configure java to alocate 10 GB of RAM to pentaho ( -Xms10240m ). But after I start pentaho I get this.
biserver-ce]# free -g
total used free shared buff/cache available
Mem: 23 4 0 0 18 18
Swap: 9 0 9
The math don't match (4GB used memory + 0 free memory isn't equal to 23G).
The swap memory is unused and I don't understand why of 18G of data in cache. In another machine with the same config but for test this not happening.
The java process running
root 12409 1 2 Jul26 ? 00:21:16 java - Djava.util.logging.config.file=/opt/pentaho/server/biserver-ce/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dserver -Xmx10240m -Xms10240m -XX:MaxPermSize=1024m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dsun.jnu.encoding=utf-8 -Dfile.encoding=utf-8 -Djava.awt.headless=true -Djava.endorsed.dirs=/opt/pentaho/server/biserver-ce/tomcat/endorsed -classpath /opt/pentaho/server/biserver-ce/tomcat/bin/bootstrap.jar -Dcatalina.base=/opt/pentaho/server/biserver-ce/tomcat -Dcatalina.home=/opt/pentaho/server/biserver-ce/tomcat -Djava.io.tmpdir=/opt/pentaho/server/biserver-ce/tomcat/temp org.apache.catalina.startup.Bootstrap start
limits config
#ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 190821
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 190821
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
EDIT:
After clear the cache with
echo 3 > /proc/sys/vm/drop_caches
I can start the service with 10Gb of RAM, but if I stop the service the cache grow up again. Is there a way to avoid manually clear the cache every time I stop/start the service?