Details

    Description

      https://github.com/facebook/mysql-5.6

      commit 617aef9f911d825e9053f3d611d0389e02031225
      Author: Inaam Rana <irana@twitter.com>
      Date: Thu Mar 6 09:51:27 2014 -0500

      Buffer pool list scan optimization

      Summary:
      Feature: Optimize Buffer Pool List Scans and Fix Reporting

      This patch includes:
      – backport of upstream work around buffer pool list scan.
      revno: 6228
      revision-id: sunny.bains@oracle.com-20130808223745-7lzp6h40vx1ndc7k
      parent: marc.alff@oracle.com-20130808135008-p5irewph4fm1yu19
      committer: Sunny Bains <Sunny.Bains@Oracle.Com>
      branch nick: trunk
      timestamp: Fri 2013-08-09 08:37:45 +1000
      message:
      WL#7047 - Optimize buffer pool list scans and related batch processin

      Reduce excessive scanning of pages when doing flush list batches. The
      fix is to introduce the concept of "Hazard Pointer", this reduces the
      time complexity of the scan from O(n*n) to O(n).

      The concept of hazard pointer is reversed in this work. Academically
      hazard pointer is a pointer that the thread working on it will declar
      such and as long as that thread is not done no other thread is allowe
      do anything with it.

      In this WL we declare the pointer as a hazard pointer and then if any
      thread attempts to work on it, it is allowed to do so but it has to a
      the hazard pointer to the next valid value. We use hazard pointer sol
      reverse traversal of lists within a buffer pool instance.

      Add an event to control the background flush thread. The background f
      thread wait has been converted to an os event timed wait so that it c
      signalled by threads that want to kick start a background flush when
      buffer pool is running low on free/dirty pages.

      Attachments

        Issue Links

          Activity

            commit a03dd94be804a4b8b1406696920834bb2c0bedbd
            Author: Jan Lindström <jan.lindstrom@skysql.com>
            Date: Thu Nov 6 13:17:11 2014 +0200

            MDEV-6936: Buffer pool list scan optimization

            Merged Facebook commit 617aef9f911d825e9053f3d611d0389e02031225
            authored by Inaam Rana to InnoDB storage engine (not XtraDB)
            from https://github.com/facebook/mysql-5.6

            WL#7047 - Optimize buffer pool list scans and related batch processing

            Reduce excessive scanning of pages when doing flush list batches. The
            fix is to introduce the concept of "Hazard Pointer", this reduces the
            time complexity of the scan from O(n*n) to O.

            The concept of hazard pointer is reversed in this work. Academically
            hazard pointer is a pointer that the thread working on it will declar
            such and as long as that thread is not done no other thread is allowe
            do anything with it.

            In this WL we declare the pointer as a hazard pointer and then if any
            thread attempts to work on it, it is allowed to do so but it has to a
            the hazard pointer to the next valid value. We use hazard pointer sol
            reverse traversal of lists within a buffer pool instance.

            Add an event to control the background flush thread. The background f
            thread wait has been converted to an os event timed wait so that it c
            signalled by threads that want to kick start a background flush when
            buffer pool is running low on free/dirty pages.

            jplindst Jan Lindström (Inactive) added a comment - commit a03dd94be804a4b8b1406696920834bb2c0bedbd Author: Jan Lindström <jan.lindstrom@skysql.com> Date: Thu Nov 6 13:17:11 2014 +0200 MDEV-6936 : Buffer pool list scan optimization Merged Facebook commit 617aef9f911d825e9053f3d611d0389e02031225 authored by Inaam Rana to InnoDB storage engine (not XtraDB) from https://github.com/facebook/mysql-5.6 WL#7047 - Optimize buffer pool list scans and related batch processing Reduce excessive scanning of pages when doing flush list batches. The fix is to introduce the concept of "Hazard Pointer", this reduces the time complexity of the scan from O(n*n) to O. The concept of hazard pointer is reversed in this work. Academically hazard pointer is a pointer that the thread working on it will declar such and as long as that thread is not done no other thread is allowe do anything with it. In this WL we declare the pointer as a hazard pointer and then if any thread attempts to work on it, it is allowed to do so but it has to a the hazard pointer to the next valid value. We use hazard pointer sol reverse traversal of lists within a buffer pool instance. Add an event to control the background flush thread. The background f thread wait has been converted to an os event timed wait so that it c signalled by threads that want to kick start a background flush when buffer pool is running low on free/dirty pages.

            People

              jplindst Jan Lindström (Inactive)
              jplindst Jan Lindström (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              1 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.