[ 
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)

Reply via email to