cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Stupp (JIRA)" <j...@apache.org>
Subject [jira] [Assigned] (CASSANDRA-11870) Consider allocating direct buffers bypassing ByteBuffer.allocateDirect
Date Sun, 19 Jun 2016 14:52:05 GMT

     [ https://issues.apache.org/jira/browse/CASSANDRA-11870?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Robert Stupp reassigned CASSANDRA-11870:
----------------------------------------

    Assignee: Robert Stupp

> Consider allocating direct buffers bypassing ByteBuffer.allocateDirect
> ----------------------------------------------------------------------
>
>                 Key: CASSANDRA-11870
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-11870
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Robert Stupp
>            Assignee: Robert Stupp
>            Priority: Minor
>             Fix For: 3.x
>
>
> As outlined in CASSANDRA-11818, {{ByteBuffer.allocateDirect}} uses {{Bits.reserveMemory}},
which is there to respect the JVM setting {{-XX:MaxDirectMemorySize=...}}.
> {{Bits.reserveMemory}} first tries an "optimistic" {{tryReserveMemory}} and exits immediately
on success. However, if that somehow doesn't succeed, it triggers a {{System.gc()}}, which
is bad IMO (however, kind of how direct buffers work in Java). After that GC it sleeps and
tries to reserve the memory up to 9 times - up to 511 ms - and then throws {{OutOfMemoryError("Direct
buffer memory")}}.
> This is unnecessary for us since we always immediately "free" direct buffers as soon
as we no longer need them.
> Proposal: Manage direct-memory reservations in our own code and skip {{Bits.reserveMemory}}
that way.
> (However, Netty direct buffers are not under our control.)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message