Skip to content

Measure sub-file CDC dedup across a real audio library, and tune chunk size #6

Description

@sepehrsadri

Wit's storage design assumes source audio dedups near-perfectly across projects, but that has only been verified for exact whole-file duplicates.

Measured so far (docs/EXPERIMENTS.md §9): across 30 real Logic projects totalling 26 GB, 882 audio files / 21.95 GB, 5.38 GB (24.5%) are byte-for-byte duplicates.

That used size-bucketing followed by whole-file hashing. It cannot see partial reuse — a trimmed sample, a file re-exported at a different length, or the same recording with a different header.

The task

Extend the analysis to sub-file, content-defined chunking using experiments/cdc_dedup.py, and report:

  1. Whole-file dedup vs CDC dedup on the same library — how much extra does chunking find?
  2. How the answer varies with average chunk size (try 8 KB, 64 KB, 256 KB). The current 64 KB target is inherited from other systems and has never been tuned on music.
  3. Whether the win justifies the added complexity, or whether whole-file hashing captures nearly all of it.

Why this matters

It directly determines part of ADR-0002. If CDC finds little beyond whole-file dedup on real libraries, the audio path gets meaningfully simpler.

Known bounds — on a single 19.6 MB stem, CDC gave 99.6% reuse on a time-shift, 93.0% on a localized re-render, and 0.00% on a global re-render. The open question is what the mix looks like across a real library.

Note the harness is pure Python at ~1–2 MB/s; budget time, or sample the library. Report your material context (how many projects, total size, genre).

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is neededmeasurementReproduce or extend a published measurement

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions