Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-89021

Investigate alternative implementations of PriorityTicketHolder with non-FIFO semantics

    • Type: Icon: Task Task
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None
    • Service Arch
    • 132

      While the FIFO semantics of the PriorityTicketHolder are fair, and typically reduce tail latencies (at the expense of median latency), some workloads also see drops in overall throughput with this implementation. This appears to be caused by the algorithm often waking a thread that is not currently scheduled, incurring higher context switching costs, and can lead to convoying. The SemaphoreTicketHolder implementation appears to do a better job of waking active waiters, and avoiding the convoy.

        1. FIFO.png
          FIFO.png
          221 kB
        2. LIFO.png
          LIFO.png
          247 kB
        3. Screenshot 2024-04-08 at 11.51.17.png
          Screenshot 2024-04-08 at 11.51.17.png
          95 kB
        4. Screenshot 2024-04-08 at 11.51.27.png
          Screenshot 2024-04-08 at 11.51.27.png
          111 kB

            Assignee:
            Unassigned Unassigned
            Reporter:
            dan.larkin-york@mongodb.com Dan Larkin-York
            Votes:
            0 Vote for this issue
            Watchers:
            11 Start watching this issue

              Created:
              Updated: