All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Ian Rogers" <irogers@google.com>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH 07/10] perf jevents: Add --compress=zstd block compression backend
Date: Fri, 13 Nov 2026 21:13:22 +0000	[thread overview]
Message-ID: <sashiko-outbox-213697@kernel.org> (raw)
In-Reply-To: <20261113210822.3112700-8-irogers@google.com>

> Add a 'zstd' block-indexed string compression backend to jevents.py that
> trains a single shared 64 KiB Zstandard dictionary across all ~8 KiB
> string blocks (itself stored zstd-compressed in .rodata and digested
> once on demand into a shared ZSTD_DDict freed at exit) and compresses
> each ~8 KiB block independently with ZSTD_compress_usingCDict().
> 
> Without a dictionary, each ~8 KiB block starts with an empty match
> window and must emit its own Huffman/FSE entropy tables from scratch.
> Sharing a trained 64 KiB dictionary pre-seeds both common event/metric
> substrings and precomputed entropy tables across all blocks, shrinking
> compressed .rodata by ~26% compared to dictionary-free ~8 KiB zstd
> blocks (738 KiB vs 1,003 KiB across all architectures, recovering over
> half the gap toward a single non-seekable 521 KiB whole-table stream)
> while keeping every block independently decompressible via
> (block_id << 16) | sub_offset.
> 
> To avoid mandatory third-party Python package dependencies across Python
> versions, lazily probe three Zstandard bindings in order:
>   1. Python 3.14+ standard-library compression.zstd
>   2. python-zstandard (zstandard) if installed
>   3. ctypes binding to the system libzstd shared library
> 
> When total string data is too small to train a dictionary, gracefully
> fall back to dictionary-free Zstandard frames. On x86, --compress=zstd
> shrinks pmu-events-string.o from ~6.90 MB to ~587 KB (~11.8x reduction).
> 
> Signed-off-by: Ian Rogers <irogers@google.com>

Sashiko has reviewed this patch and found no issues.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261113210822.3112700-1-irogers@google.com?part=7


  reply	other threads:[~2026-11-13 21:13 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-13 21:08 [PATCH 00/10] perf jevents: Block-indexed string compression and default JEVENTS_ARCH=all Ian Rogers
2026-11-13 21:08 ` [PATCH 01/10] perf jevents: Store raw bytes in BigCString instead of C-escaped strings Ian Rogers
2026-11-13 21:21   ` sashiko-bot
2026-11-13 21:08 ` [PATCH 02/10] perf jevents: Sort BigCString entries alphabetically Ian Rogers
2026-11-13 21:12   ` sashiko-bot
2026-11-13 21:08 ` [PATCH 03/10] perf jevents: Store PMU names as string literals in struct pmu_table_entry Ian Rogers
2026-11-13 21:13   ` sashiko-bot
2026-11-13 21:08 ` [PATCH 04/10] perf jevents: Encapsulate big_c_string lookups behind pmu_events__get_string() Ian Rogers
2026-11-13 21:12   ` sashiko-bot
2026-11-13 21:08 ` [PATCH 05/10] perf jevents: Add block-indexed string packing and --compress=zlib Ian Rogers
2026-11-13 21:16   ` sashiko-bot
2026-11-13 21:08 ` [PATCH 06/10] perf jevents: Add --compress=lzma block compression backend Ian Rogers
2026-11-13 21:13   ` sashiko-bot
2026-11-13 21:08 ` [PATCH 07/10] perf jevents: Add --compress=zstd " Ian Rogers
2026-11-13 21:13   ` sashiko-bot [this message]
2026-11-13 21:08 ` [PATCH 08/10] perf build: Enable jevents string compression when available Ian Rogers
2026-11-13 21:17   ` sashiko-bot
2026-11-13 21:08 ` [PATCH 09/10] perf tests pmu-events: Test metricgroup descriptions and concurrent lookups Ian Rogers
2026-11-13 21:20   ` sashiko-bot
2026-11-13 21:08 ` [PATCH 10/10] perf build: Default JEVENTS_ARCH to all Ian Rogers
2026-11-13 21:21   ` sashiko-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=sashiko-outbox-213697@kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=irogers@google.com \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.