Skip to content

Introduce PageStorage V3 to reduce CPU usage and write amplification #3594

Closed
@JaySon-Huang

Description

@JaySon-Huang

Feature Request

Teachability, Documentation, Adoption, Migration Strategy:
To reduce CPU usage and write amplification, we file a proposal for new version of PageStorage: Proposal: PageStorage V3 Design
This issue records the progress of PageStorage V3 development.

Development progress

  • some preparations and refactoration
  • The framework and related data structure for PageStorage V3
  • BlobStore
  • MVCC PageDirectory
    • Basic apply edits, get PageEntry
    • GC for cleaning up removed Page
    • GC with BlobStore data movement
    • GCApply needs to scan all living page ids with a read lock, which could cause high write blocking time. Find a better way for removing external pages; fixed in PageStorage: Ref page lifetime mechanism #4174
    • Stale snapshots detection
      • Record the thread id, created time while creating a snapshot
      • Log warnings when there exist long time snapshot
      • Optimization when stale snapshot(s) exist (MVCC GC, BlobStore GC)
  • WALLog
    • LogFile format
    • Meta format for persisting the PageEntry applied to MVCC PageDirectory
    • Compaction of LogFiles
    • Multi-disks rolling
  • Benchmark vs V2
  • Compatibility with other features
    • Respect WriteLimiter && ReadLimiter
    • Respect Encryption at rest
  • Global PageStorage for one TiFlash instance
    • Cleanup data in global PageStorage instance when dropping table
  • Further improvement/features
    • Tools for debugging PageStorage (page_ctl)
    • Transfering data from old storage to V3
    • Check whether use list instead of set for FilenameSet is better PageStorage: WALStore #3891 (comment)
    • Split the pipeline of persisting write batch into smaller parts and speed up the throughput for WALStore
    • Compression on serialized entries (in WAL)

Split PRs

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

type/feature-requestCategorizes issue or PR as related to a new feature.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    Introduce PageStorage V3 to reduce CPU usage and write amplification · Issue #3594 · pingcap/tiflash