Hi,
I have a test node with apache-cassandra-0.6.8 on ubuntu 10.4. The hardware
environment is an OpenVZ container. JVM settings is
# java -Xmx128m -version
java version "1.6.0_18"
OpenJDK Runtime Environment (IcedTea6 1.8.2) (6b18-1.8.2-4ubuntu2)
OpenJDK 64-Bit Server VM (build 16.0-b13, mixed mode)
This is the memory settings:
"/usr/bin/java -ea -Xms1G -Xmx1G ..."
And the ondisk footprint of sstables is very small:
"#du -sh data/
"9.8M data/"
The node was infrequently accessed in the last three weeks. After that, I
observe the abnormal memory utilization by top:
PID USER PR NI *VIRT* *RES* SHR S %CPU %MEM TIME+
COMMAND
7836 root 15 0 *3300m* *2.4g* 13m S 0 26.0 2:58.51
java
The jvm heap utilization is quite normal:
#sudo jstat -gc -J"-Xmx128m" 7836
S0C S1C S0U S1U *EC* *EU* *OC*
*OU*
*PC PU* YGC YGCT FGC FGCT GCT
8512.0 8512.0 372.8 0.0 *68160.0* *5225.7* *963392.0 508200.7
30604.0 18373.4* 480 3.979 2 0.005 3.984
And then I try "pmap" to see the native memory mapping. *There is two large
anonymous mmap regions.*
00000000080dc000 1573568K rw--- [ anon ]
00002b2afc900000 1079180K rw--- [ anon ]
The second one should be JVM heap. What is the first one? Mmap of sstable
should never be anonymous mmap, but file based mmap. *Is it a native
memory leak? *Does cassandra allocate any DirectByteBuffer?
best regards,
hanzhu
|