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

Prevent JVM Humongous allocations

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Normal
    • Resolution: Unresolved
    • None
    • Local/Other
    • None
    • Degradation
    • Low
    • Normal
    • User Report
    • Java8, Java11
    • None

    Description

      Several articles on Cassandra note that certain workloads, especially large partitions, can cause humongous allocations in Java, which can be reduced, but not always eliminated by increasing RegionSize.  RegionSize max is 32MB.  Humongous allocations are an undesirable performance issue because new objects get directly allocated in old space.

      Below is a sample message seen in the gc.log

      2022-05-23T18:46:58.743+0800: 3758624.170: [GC pause (G1 Humongous Allocation) (young) (initial-mark) 3758624.171: [G1Ergonomics (CSet Construction) start choosing CSet, _pending_cards: 56725, predicted base time: 39.83 ms, remaining time: 160.17 ms, target pause time: 200.00 ms]

      Instead of Cassandra users tuning RegionSize manually, a better solution would be for Cassandra to limit the size of allocations, or consider moving humongous allocations off heap.

       

      References

      https://docs.oracle.com/en/java/javase/11/gctuning/garbage-first-g1-garbage-collector1.html#GUID-D74F3CC7-CC9F-45B5-B03D-510AEEAC2DAC

      https://stevenlacerda.medium.com/identifying-and-fixing-humongous-allocations-in-cassandra-bf46444cec41

      https://krzysztofslusarski.github.io/2020/11/10/humongous.html

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              bschoeni Brad Schoening
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: