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

Options for NVDIMM usage in MariaDB

Details

    • Task
    • Status: Open (View Workflow)
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None

    Description

      Hardware for NVDIMM plans to provide RAM speed access for byte addressable persistent memory. Linux kernel and userspace supporting libraries (http://pmem.io/nvml/) are providing vendor independent interfaces for using the hardware. As far as I can tell these devices are in the multiple GB size and may extend to what is currently disk size.

      NVML library is a BSD-3 licensed product containing various useful APIs.

      Options for integrating NVDIMM's features into the current MariaDB implementation include:

      1. Use a binary log space (probably the lowest benefit but easy to implement)
      2. Create a new storage engine for NVDIMM (probably most beneficial but hardest to implement)
      3. Innodb: Using NVDIMM as innodb log buffer could eliminate the need for a innodb log file implementation
      4. Innodb: Using buffer pool as NVDIMM (as mechanism to simplify innodb_buffer_pool_dump*/innodb_buffer_pool_restore*)
      5. Innodb: Using tablespaces on NVDIMM (MySQL-5.7 appears to have partition table spaces)
      6. Innodb: Table option that specifies a NVDIMM location as a tablespace
      7. Innodb: partitions can specify NVDIMM tablespace - keep frequent partition only in NVDIMM
      8. MyISAM: sorting MYD and/or MYI files in NVDIMM as per CREATE TABLE options or INDEX options

      Attachments

        Issue Links

          Activity

            greenman Ian Gilfillan added a comment - See the recent SQL Server announcement too: https://blogs.technet.microsoft.com/dataplatforminsider/2017/11/29/sql-server-2017-the-worlds-first-enterprise-class-diskless-database/

            MariaDB Server 10.5 implemented the compile time option WITH_PMEM. If the InnoDB redo log is located on a mount -t dax file system, persistence will be achieved without system calls using the library.

            MDEV-25090 in MariaDB Server 10.6 enables WITH_PMEM by default on those platforms that support it.

            In MDEV-14425, this may be improved further. We might remove the library dependency, directly mmap() the log_sys.buf and execute an instruction that flushes the caches to the persistent memory.

            marko Marko Mäkelä added a comment - MariaDB Server 10.5 implemented the compile time option WITH_PMEM . If the InnoDB redo log is located on a mount -t dax file system, persistence will be achieved without system calls using the library. MDEV-25090 in MariaDB Server 10.6 enables WITH_PMEM by default on those platforms that support it. In MDEV-14425 , this may be improved further. We might remove the library dependency, directly mmap() the log_sys.buf and execute an instruction that flushes the caches to the persistent memory.

            MDEV-33447 hard-codes the libpmem functionality in MariaDB Server 10.11.8 and removes the library dependency. We were only using the pmem_persist() function.

            marko Marko Mäkelä added a comment - MDEV-33447 hard-codes the libpmem functionality in MariaDB Server 10.11.8 and removes the library dependency. We were only using the pmem_persist() function.

            MDEV-34705 allows the binary log to be made durable via ib_logfile0, for which a format that is friendly towards persistent memory was implemented in MDEV-14425.

            marko Marko Mäkelä added a comment - MDEV-34705 allows the binary log to be made durable via ib_logfile0 , for which a format that is friendly towards persistent memory was implemented in MDEV-14425 .

            People

              Unassigned Unassigned
              danblack Daniel Black
              Votes:
              1 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:

                Git Integration

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