[
https://issues.apache.org/jira/browse/CASSANDRA-10930?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15070786#comment-15070786
]
Robert Stupp commented on CASSANDRA-10930:
------------------------------------------
The default of {{maxDirectMemory == heapSize}} feels fine from a brief look of
the usages of {{ByteBuffer.allocateDirect}} in C* source tree.
I don't really get why oomkiller (the Linux thing, I guess) should kick in -
except if a machine has limited amounts of RAM (say a few GB), as you said
("max_mem <= 2*heap"). But if you limit {{-XX:MaxDirectMemorySize}} you might
need to adjust C*'s uses of direct memory - otherwise it will just throw an
{{OutOfMemoryError}}.
Interestingly {{java.nio.Bits#reserveMemory}} performs a GC if the initial
reserve operation did not succeed - so it feels to be a good idea to provide
some operational head-room using {{-XX:MaxDirectMemorySize}} in order to never
hit that {{System.gc()}} call and second {{synchronised}} block.
FTR - this does definitely not affect direct usages of
{{Unsafe.allocateMemory}} (row-cache, bloom filter, index summaries,
compression metadata).
> Limit off-heap memory
> ---------------------
>
> Key: CASSANDRA-10930
> URL: https://issues.apache.org/jira/browse/CASSANDRA-10930
> Project: Cassandra
> Issue Type: Improvement
> Components: Configuration
> Reporter: Paulo Motta
> Priority: Minor
> Fix For: 3.x
>
>
> It seems the default maximum off-heap memory varies according to the JVM
> version. For oracle hotspot, this defaults to the heap size, according to
> [this|https://terracotta.org/generated/4.3.1/html/bmg-all/index.html#page/bigmemory-go-webhelp/co-tiers_configuring_offheap_store.html]
> and
> [this|http://hg.openjdk.java.net/jdk7u/jdk7u/jdk/file/55f6804b4352/src/share/classes/sun/misc/VM.java#l279].
> This may cause oomkiller to kick in if max_mem <= 2*heap.
> Opening this ticket to discuss potentially limiting off-heap usage by default
> on {{cassandra-env.sh}} with the {{-XX:MaxDirectMemorySize}}, but I wouldn't
> know to which value. Or at least checking if max_mem > 2*heap.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)