Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-13896

Improving Cassandra write performance

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Normal
    • Resolution: Unresolved
    • 5.x
    • Skylake server with 2 sockets, 192GB RAM, 3xPCIe SSDs
      OS: Centos 7.3
      Java: Oracle JDK1.8.0_121

    Description

      During our Cassandra performance testing, we see high percentage of the CPU spent in org.apache.cassandra.utils.memory.SlabAllocator.allocate(int, OpOrder Group) * method. Appears to be high contention of the *<nextFreeOffset> atomic Integer in write workloads. This structure is used by the threads for keeping track of the region bytebuffer allocation. When the contention appears, adding more clients, modifications of write specific parameters does not change write throughput performance. Attached are the details of Java Flight Recorder (JFR), showing hot functions and also performance results. When we see this contention, we still have plenty of CPU and throughput left ( <20% Total average CPU utilization and <11% of the storage write total throughput). This occurs on Cassandra 3.10.0-src version using the Cassandra-Stress.

      Proposal:
      We will like to introduce a solution which eliminates the atomic operations on the <nextFreeOffset> atomic Integer. This implementation will allow concurrent allocation of bytebuffers without an atomic compareAndSet and incrementAndGet operations. The solution is expected to increase overall write performance while improving CPU utilization.

      Attachments

        1. Screen Shot 2017-09-22 at 11.22.43 AM.png
          604 kB
          Prince Nana Owusu Boateng
        2. Screen Shot 2017-09-22 at 3.31.09 PM.png
          57 kB
          Prince Nana Owusu Boateng

        Activity

          People

            Unassigned Unassigned
            PrinceNana Prince Nana Owusu Boateng
            Votes:
            1 Vote for this issue
            Watchers:
            11 Start watching this issue

            Dates

              Created:
              Updated: