Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-19625

add a tuneable for cbq-engine go garbage collection

    XMLWordPrintable

Details

    • Improvement
    • Resolution: Done
    • Critical
    • feature-backlog
    • 4.5.0
    • query
    • build 2510

    Description

      In some circumstances where system memory is plentiful and query throughput is high, it can be useful to hint the go runtime to be a bit more lax with heap growth. This can be achieved both through GOGC and programmatically.

      The request here is to add a tuneable, accessible through HTTP like other settings, which adjusts GOGC without a restart.

      Note that the indexer has a similar tuneable: "indexer.settings.gc_percent".

      From a recent test where we interposed on cbq-engine and set GOGC:
      Baseline: 16943 ops/s at 11442.2 µsec max 95%.
      GOGC 200: 18557 ops/s at 10866µsec max95%
      GOGC 400: 19814 ops/s at 10501.4µsec max 95%
      GOGC 800: 20512 ops/s at 9759µsec max 95%
      GOGC 1600: 19866 ops/s at 10435.8µsec max 95%

      There were also several runs going the other way:
      GOGC 20: 12808 ops/s with 43883.8 µsec at max 95%.
      GOGC 80: 14815 ops/s at 18759µsec max 95% latency

      • the "80" result had missed setting some other tuneables that were set with the other runs so those results shouldn't necessarily be trusted, but notably it didn't seem to affect the results.

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              mihir.kamdar Mihir Kamdar (Inactive)
              ingenthr Matt Ingenthron
              Votes:
              1 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes

                  PagerDuty