ExportXMLWordPrintableJSON

    • Type: Bug
    • Resolution: Fixed
    • Priority: Major - P3
    • 9.1.0-rc0, 9.1.0-rc1025
    • Affects Version/s: None
    • Component/s: None
    • None
    • DB Integration & Observability
    • Fully Compatible
    • ALL
    • v9.0, v8.3, v8.0
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      As seen in HELP-101554, for non-x86 and non-arm64 builds, Timer::getTime() inĀ ObservableMutex calls std::clock() which performs a syscall which has performance implications.

      This was flagged by a customer's performance testing running on s390x which showed significant regressions when upgrading to 8.0.30, the first 8.0 version containing ObservableMutex. Flamegraphs from the customer's perf testing show the syscall as the culprit:

      Recently, on 9.1 this entire function was replaced with a call to absl::base_internal::CycleClock::Now(), however I think more testing is needed to very the impact of this change. SERVER-136951 is tracking that stream.

      Our immediate plan of action should be to revert the 9.1 change, and return 0 instead of calling std::clock() on non-x86 and non-arm64 builds. This will zero-out the waitCycles metric for more uncommon architectures which is preferable to introducing perf regressions. x86 and arm64 builds will be unaffected. This should be backported through 8.0, the earliest version containing ObservableMutex.

        1. image (1).png
          179 kB
          Cole Harbeck

            Assignee:
            Cole Harbeck
            Reporter:
            Cole Harbeck
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: