[jira] [Assigned] (CASSANDRA-11870) Consider allocating direct buffers bypassing ByteBuffer.allocateDirect
[ https://issues.apache.org/jira/browse/CASSANDRA-11870?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Robert Stupp reassigned CASSANDRA-11870: Assignee: (was: 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 >Priority: Low > Fix For: 3.11.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 (v8.3.4#803005) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[jira] [Assigned] (CASSANDRA-11870) Consider allocating direct buffers bypassing ByteBuffer.allocateDirect
[ 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)