home | list info | list archive | date index | thread index

Specific commits mentioned during supper at L3GO

commit 1d57628ff95b32d5cfa8d8f50e07690c161e9cf0
Author: Dongsheng Yang <dongsheng [ dot ] yang [ at ] linux [ dot ] dev>
Date:   Tue Aug 12 08:24:52 2025 +0000

    dm-pcache: add persistent cache target in device-mapper

    This patch introduces dm-pcache, a new DM target that places a DAX-
    capable persistent-memory device in front of any slower block device and
    uses it as a high-throughput, low-latency  cache.

    Design highlights
    -----------------
    - DAX data path – data is copied directly between DRAM and the pmem
      mapping, bypassing the block layer’s overhead.

    - Segmented, crash-consistent layout
      - all layout metadata are dual-replicated CRC-protected.
      - atomic kset flushes; key replay on mount guarantees cache integrity
        even after power loss.

    - Striped multi-tree index
      - Multi‑tree indexing for high parallelism.
      - overlap-resolution logic ensures non-intersecting cached extents.

    - Background services
      - write-back worker flushes dirty keys in order, preserving backing-device
        crash consistency. This is important for checkpoint in cloud storage.
      - garbage collector reclaims clean segments when utilisation exceeds a
        tunable threshold.

    - Data integrity – optional CRC32 on cached payload; metadata always protected.

    Comparison with existing block-level caches
    ---------------------------------------------------------------------------------------------------------------------------------
    | Feature                          | pcache (this patch)             | bcache                       | dm-writecache             |
    |----------------------------------|---------------------------------|------------------------------|---------------------------|
    | pmem access method               | DAX                             | bio (block I/O)              | DAX                       |
    | Write latency (4 K rand-write)   | ~5 µs                           | ~20 µs                       | ~5 µs                     |
    | Concurrency                      | multi subtree index             | global index tree            | single tree + wc_lock     |
    | IOPS (4K randwrite, 32 numjobs)  | 2.1 M                           | 352 K                        | 283 K                     |
    | Read-cache support               | YES                             | YES                          | NO                        |
    | Deployment                       | no re-format of backend         | backend devices must be      | no re-format of backend   |
    |                                  |                                 | reformatted                  |                           |
    | Write-back ordering              | log-structured;                 | no ordering guarantee        | no ordering guarantee     |
    |                                  | preserves app-IO-order          |                              |                           |
    | Data integrity checks            | metadata + data CRC(optional)   | metadata CRC only            | none                      |
    ---------------------------------------------------------------------------------------------------------------------------------

    Signed-off-by: Dongsheng Yang <dongsheng [ dot ] yang [ at ] linux [ dot ] dev>
    Signed-off-by: Mikulas Patocka <mpatocka [ at ] redhat [ dot ] com>

--
Manage your subscription: https://lists.linux-ottawa.org/sigs-l3go/listinfo.html