cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Schlosnagle (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CASSANDRA-10433) Reduce contention in CompositeType instance interning
Date Thu, 01 Oct 2015 22:48:26 GMT
David Schlosnagle created CASSANDRA-10433:
---------------------------------------------

             Summary: Reduce contention in CompositeType instance interning
                 Key: CASSANDRA-10433
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10433
             Project: Cassandra
          Issue Type: Improvement
         Environment: Cassandra 2.2.1 running on 6 AWS c3.4xlarge nodes, CentOS 6.6
            Reporter: David Schlosnagle
            Priority: Minor


While running some workload tests on Cassandra 2.2.1 and profiling with flight recorder in
a test environment, we have noticed significant contention on the static synchronized org.apache.cassandra.db.marshal.CompositeType.getInstance(List)
method.

We are seeing threads blocked for 22.828 seconds from a 60 second snapshot while under a mix
of reads and writes from a Thrift based client.

I would propose to reduce contention in org.apache.cassandra.db.marshal.CompositeType.getInstance(List)
by using a ConcurrentHashMap for the instances cache.

{code}
Contention Back Trace
org.apache.cassandra.db.marshal.CompositeType.getInstance(List)
  org.apache.cassandra.db.composites.AbstractCompoundCellNameType.asAbstractType()
    org.apache.cassandra.db.SuperColumns.getComparatorFor(CFMetaData, boolean)
      org.apache.cassandra.db.SuperColumns.getComparatorFor(CFMetaData, ByteBuffer)
        org.apache.cassandra.thrift.ThriftValidation.validateColumnNames(CFMetaData, ByteBuffer,
Iterable)
          org.apache.cassandra.thrift.ThriftValidation.validateColumnPath(CFMetaData, ColumnPath)
            org.apache.cassandra.thrift.ThriftValidation.validateColumnOrSuperColumn(CFMetaData,
ByteBuffer, ColumnOrSuperColumn)
              org.apache.cassandra.thrift.ThriftValidation.validateMutation(CFMetaData, ByteBuffer,
Mutation)
                org.apache.cassandra.thrift.CassandraServer.createMutationList(ConsistencyLevel,
Map, boolean)
                  org.apache.cassandra.thrift.CassandraServer.batch_mutate(Map, ConsistencyLevel)
                    org.apache.cassandra.thrift.Cassandra$Processor$batch_mutate.getResult(Cassandra$Iface,
Cassandra$batch_mutate_args)
        org.apache.cassandra.thrift.ThriftValidation.validateRange(CFMetaData, ColumnParent,
SliceRange)
          org.apache.cassandra.thrift.ThriftValidation.validatePredicate(CFMetaData, ColumnParent,
SlicePredicate)
            org.apache.cassandra.thrift.CassandraServer.get_range_slices(ColumnParent, SlicePredicate,
KeyRange, ConsistencyLevel)
              org.apache.cassandra.thrift.Cassandra$Processor$get_range_slices.getResult(Cassandra$Iface,
Cassandra$get_range_slices_args)
                org.apache.cassandra.thrift.Cassandra$Processor$get_range_slices.getResult(Object,
TBase)
                  org.apache.thrift.ProcessFunction.process(int, TProtocol, TProtocol, Object)
                    org.apache.thrift.TBaseProcessor.process(TProtocol, TProtocol)
                      org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run()
                        java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker)
                          java.util.concurrent.ThreadPoolExecutor$Worker.run()
            org.apache.cassandra.thrift.CassandraServer.multigetSliceInternal(String, List,
ColumnParent, long, SlicePredicate, ConsistencyLevel, ClientState)
              org.apache.cassandra.thrift.CassandraServer.multiget_slice(List, ColumnParent,
SlicePredicate, ConsistencyLevel)
                org.apache.cassandra.thrift.Cassandra$Processor$multiget_slice.getResult(Cassandra$Iface,
Cassandra$multiget_slice_args)
                  org.apache.cassandra.thrift.Cassandra$Processor$multiget_slice.getResult(Object,
TBase)
{code}




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

Mime
View raw message