Details

    • 10.3.6-1, 10.4.0-1

    Description

      MySQL 8.0.0 split the InnoDB buf_pool_t::mutex. MariaDB should do something similar.

      Instead of introducing more mutexes or radically changing the latching rules of various buf_pool_t and buf_block_t data members, I think that it is possible to reduce the contention on buf_pool.mutex by other means:

      • Move more code to inline functions of buf_pool_t or buf_page_t.
      • Reduce the amount of mutex release/reacquire dance in buf0flu.cc and buf0rea.cc.
      • Avoid repeated calls to page_id_t::fold() or page_id_t::page_id_t(); use page_id_t directly as loop iterator.
      • Move buf_page_t::flush_type to IORequest.
      • Split buf_page_io_complete() into separate ‘read completion’ and ‘write completion’ callbacks.
      • Avoid holding buf_pool.mutex during buf_pool.page_hash operations. Consider removing the debug field buf_page_t::in_page_hash.
      • Split operations on buf_pool.watch[] into two parts. The allocation of buf_pool.watch[] should be only protected by buf_pool.mutex, and the buf_pool.page_hash only by the hash bucket latch.

      Attachments

        Issue Links

          Activity

            marko Marko Mäkelä created issue -
            marko Marko Mäkelä made changes -
            Field Original Value New Value
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            Assignee Marko Mäkelä [ marko ] Thirunarayanan B [ thiru ]
            thiru Thirunarayanan Balathandayuthapani made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            marko Marko Mäkelä made changes -
            Attachment bug75534-2.patch [ 45258 ]
            marko Marko Mäkelä made changes -
            thiru Thirunarayanan Balathandayuthapani made changes -
            Sprint 10.3.6 [ 237 ]
            ratzpo Rasmus Johansson (Inactive) made changes -
            Sprint 10.3.6-1 [ 237 ] 10.3.6-1, 10.4.0-1 [ 237, 254 ]
            ratzpo Rasmus Johansson (Inactive) made changes -
            Rank Ranked lower
            marko Marko Mäkelä made changes -
            NRE Projects RM_105_CANDIDATE
            serg Sergei Golubchik made changes -
            Fix Version/s 10.4 [ 22408 ]
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            Status In Progress [ 3 ] Stalled [ 10000 ]
            marko Marko Mäkelä made changes -
            Fix Version/s 10.5 [ 23123 ]
            Fix Version/s 10.3 [ 22126 ]
            Fix Version/s 10.4 [ 22408 ]
            Assignee Thirunarayanan Balathandayuthapani [ thiru ] Vladislav Vaintroub [ wlad ]
            julien.fritsch Julien Fritsch made changes -
            Priority Major [ 3 ] Critical [ 2 ]
            serg Sergei Golubchik made changes -
            Fix Version/s 10.5 [ 23123 ]
            wlad Vladislav Vaintroub made changes -
            Fix Version/s 10.5 [ 23123 ]
            wlad Vladislav Vaintroub made changes -
            Status Stalled [ 10000 ] In Progress [ 3 ]
            marko Marko Mäkelä made changes -
            Status In Progress [ 3 ] Stalled [ 10000 ]
            marko Marko Mäkelä made changes -
            Assignee Vladislav Vaintroub [ wlad ] Marko Mäkelä [ marko ]
            marko Marko Mäkelä made changes -
            Status Stalled [ 10000 ] In Progress [ 3 ]
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            Description [MySQL 8.0.0 split the InnoDB {{buf_pool_t::mutex}}|https://github.com/mysql/mysql-server/commit/2bcc00d11f21fe43ba3c0e0f81d3d9cec44c44a0]. MariaDB should do the same. [MySQL 8.0.0 split the InnoDB {{buf_pool_t::mutex}}|https://github.com/mysql/mysql-server/commit/2bcc00d11f21fe43ba3c0e0f81d3d9cec44c44a0]. MariaDB should do something similar.

            Instead of introducing more mutexes or radically changing the latching rules of various {{buf_pool_t}} and {{buf_block_t}} data members, I think that it is possible to reduce the contention on {{buf_pool.mutex}} by other means:
            * Move more code to inline functions of {{buf_pool_t}} or {{buf_page_t}}.
            * Reduce the amount of mutex release/reacquire dance in {{buf0flu.cc}} and {{buf0rea.cc}}.
            * Avoid repeated calls to {{page_id_t::fold()}} or {{page_id_t::page_id_t()}}; use {{page_id_t}} directly as loop iterator.
            * Move {{buf_page_t::flush_type}} to {{IORequest}}.
            * Split {{buf_page_io_complete()}} into separate ‘read completion’ and ‘write completion’ callbacks.
            * Avoid holding {{buf_pool.mutex}} during {{buf_pool.page_hash}} operations. Consider removing the debug field {{buf_page_t::in_page_hash}}.
            * Split operations on {{buf_pool.watch[]}} into two parts. The allocation of {{buf_pool.watch[]}} should be only protected by {{buf_pool.mutex}}, and the {{buf_pool.page_hash}} only by the hash bucket latch.
            Summary Split buf_pool_t::mutex Reduce buf_pool_t::mutex contention
            marko Marko Mäkelä made changes -
            Assignee Marko Mäkelä [ marko ] Eugene Kosov [ kevg ]
            Status In Progress [ 3 ] In Review [ 10002 ]
            marko Marko Mäkelä made changes -
            kevg Eugene Kosov (Inactive) made changes -
            Assignee Eugene Kosov [ kevg ] Marko Mäkelä [ marko ]
            Status In Review [ 10002 ] Stalled [ 10000 ]
            marko Marko Mäkelä made changes -
            Status Stalled [ 10000 ] In Progress [ 3 ]
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            issue.field.resolutiondate 2020-06-05 09:40:41.0 2020-06-05 09:40:41.558
            marko Marko Mäkelä made changes -
            Fix Version/s 10.5.4 [ 24264 ]
            Fix Version/s 10.5 [ 23123 ]
            Resolution Fixed [ 1 ]
            Status In Progress [ 3 ] Closed [ 6 ]
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            axel Axel Schwenke made changes -
            thiru Thirunarayanan Balathandayuthapani made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            axel Axel Schwenke made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 85114 ] MariaDB v4 [ 133446 ]
            danblack Daniel Black made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -

            People

              marko Marko Mäkelä
              marko Marko Mäkelä
              Votes:
              1 Vote for this issue
              Watchers:
              14 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.