Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-14505

Threads_running becomes scalability bottleneck

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 5.5, 10.0, 10.1, 10.2, 10.3
    • Fix Version/s: 10.3.3
    • Component/s: Server
    • Labels:

      Description

      thread_running is global shared variable, which is updated twice per query in dispatch_command() using atomic-add.

      It started to appear on radar in OLTP RO benchmark. E.g here're numbers for 2 socket/20 cores/40 threads Intel Broadwell system:

         0,70%  mysqld               [.] dispatch_command
      ...
             │      inline void thread_safe_increment32(int32 *value)
             │      {
             │        (void) my_atomic_add32_explicit(value, 1, MY_MEMORY_ORDER_RELAXED);
        0,59 │ 680:   lea    thread_running,%rax
       16,07 │        lock   addl   $0x1,(%rax)
      

      If we remove inc_thread_running() and dec_thread_running() we get slightly better throughput and dispatch_command() goes down in profiler:

         0,58%  mysqld               [.] dispatch_command
      ...
             │      /* increment query_id and return it.  */
             │      inline __attribute__((warn_unused_result)) query_id_t next_query_id()
             │      {
             │        return my_atomic_add64_explicit(&global_query_id, 1, MY_MEMORY_ORDER_RELAXED);
        0,49 │ 290:   mov    $0x1,%edx
       18,02 │        lock   xadd   %rdx,(%r14)
      

      So bottleneck is shifted to global_query_id counter, which is subject for another bug.

      I expect much higher scalability impact on more powerful hardware.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                svoj Sergey Vojtovich
                Reporter:
                svoj Sergey Vojtovich
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: