Skip to content

small formatting tweak in reference.md#77

Merged
NikolayS merged 1 commit intoNikolayS:mainfrom
The-Alchemist:patch-1
Apr 19, 2026
Merged

small formatting tweak in reference.md#77
NikolayS merged 1 commit intoNikolayS:mainfrom
The-Alchemist:patch-1

Conversation

@The-Alchemist
Copy link
Copy Markdown
Contributor

the function was inside a code block so it wasn't formatted like the rest of the pgque.* functions in the rest of the file

the function was inside a code block so it wasn't formatted like the rest of the `pgque.*` functions in the rest of the file
@NikolayS
Copy link
Copy Markdown
Owner

thanks @The-Alchemist

@NikolayS NikolayS merged commit 52f2a8a into NikolayS:main Apr 19, 2026
NikolayS pushed a commit that referenced this pull request Apr 30, 2026
…ark/ (issue #77)

Adds a strictly-additive benchmark/ directory documenting the
methodology, tooling, and operational lessons from the
pgque-vs-pgq-vs-pgmq-vs-river-vs-que-vs-pgboss-vs-pgmq-partitioned bench
that backs #61 and PR #62.

- README.md: entry point + quick-start
- METHODOLOGY.md: adapted from GitLab #77 note 3263767264
- OPS_GOTCHAS.md: 15 operational lessons (NEW — NVMe mount, partman stale
  rows, que func leftovers, pgboss covering index, pgq ticker, pgque xid8
  bug, spot reclaim, ASH prereqs, NOTICE instrumentation, etc.)
- HARDWARE.md: i4i.2xlarge specs, PG tuning, microbench baselines
- tooling/, runners/, consumers/, producers/, install/, charts/, gifs/

No pgque production SQL is touched.
Refs: #61, #62.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
NikolayS added a commit that referenced this pull request Apr 30, 2026
Remove all references to private GitLab URLs, internal round
numbering (R4/R5/R6/R8), and postgres-ai/postgresql-consulting
paths from benchmark/ files.

- METHODOLOGY.md: drop GitLab URL + note IDs from header; remove
  GitLab posting-style section (§9); neutralize round refs; fix
  /tmp/bench_r<N> path reference
- README.md: drop "(from GitLab #77)" comment
- HARDWARE.md: fix binary units (GB→GiB, TB→TiB); drop R7 round ref
- OPS_GOTCHAS.md: neutralize R4/R6 round refs in lessons; fix
  binary units (GB→GiB, MB/s→MiB/s)
- consumers/*.sql: drop "R6 instrumented" prefix from all 7 files
- runners/run_r7.sh: remove R6/R7 round refs from inline comments
- tooling/sys_metrics_sampler.py: remove R7 from docstring
- tooling/parse_events_consumed.py: remove R6 from docstring + msg
- charts/r5_analyze.py, r6_smoke_chart.py: remove Rn from docstrings,
  chart titles, and file-size output (KB→KiB)

PR description updated separately via gh pr edit to remove GitLab
link and round numbering.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
NikolayS pushed a commit that referenced this pull request Apr 30, 2026
Three standalone Python scripts that consume per-system bench output at
/tmp/bench_r8_full/<sys>/ and produce the Solarized-Dark chart set used
in the R8 review post (issue #77).

- r8_analyze.py: 6-panel overlay across 7 systems (throughput, bloat, CPU,
  NVMe write, true backlog, delivery-lag p99). LINEAR y-axes everywhere;
  p99 lag clipped at 5s (no log scale). Backlog column is
  producer_total - consumer_total, not n_live_tup snapshot.
- r8_ash_analyze.py: per-system stacked-area of ASH wait-event categories
  (CPU* / IO / LWLock / Lock / Client / IPC / Activity / Other) over 2h,
  1-minute buckets, LINEAR 0-1.0 proportion.
- r8_pgfr_analyze.py: 4-column-x-7-row pgfr deep-dive. Col 1 top-5 queries
  by cumulative total_exec_time with actual truncated query text (DO
  blocks unwrapped to first PERFORM/SELECT/UPDATE/DELETE/INSERT
  statement — no more opaque q1/q2/q3 labels). Col 2 per-query buffer hit
  rate. Col 3 per-query wal_bytes. Col 4 global WAL rate MiB/s + active
  backends twin-axis. Falls back to pgss.csv for systems without pgfr
  installed.

Styling (Solarized Dark rcParams block, phase bands, legend placement)
inherits from benchmark/charts/r6_smoke_chart.py in PR #66.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
NikolayS added a commit that referenced this pull request Apr 30, 2026
* charts: add R8 analyzers (main + ASH + pgfr) to benchmark/charts/

Three standalone Python scripts that consume per-system bench output at
/tmp/bench_r8_full/<sys>/ and produce the Solarized-Dark chart set used
in the R8 review post (issue #77).

- r8_analyze.py: 6-panel overlay across 7 systems (throughput, bloat, CPU,
  NVMe write, true backlog, delivery-lag p99). LINEAR y-axes everywhere;
  p99 lag clipped at 5s (no log scale). Backlog column is
  producer_total - consumer_total, not n_live_tup snapshot.
- r8_ash_analyze.py: per-system stacked-area of ASH wait-event categories
  (CPU* / IO / LWLock / Lock / Client / IPC / Activity / Other) over 2h,
  1-minute buckets, LINEAR 0-1.0 proportion.
- r8_pgfr_analyze.py: 4-column-x-7-row pgfr deep-dive. Col 1 top-5 queries
  by cumulative total_exec_time with actual truncated query text (DO
  blocks unwrapped to first PERFORM/SELECT/UPDATE/DELETE/INSERT
  statement — no more opaque q1/q2/q3 labels). Col 2 per-query buffer hit
  rate. Col 3 per-query wal_bytes. Col 4 global WAL rate MiB/s + active
  backends twin-axis. Falls back to pgss.csv for systems without pgfr
  installed.

Styling (Solarized Dark rcParams block, phase bands, legend placement)
inherits from benchmark/charts/r6_smoke_chart.py in PR #66.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* charts: ASH y-axis shows active-session COUNT (standard ASH convention)

Previous proportion-based (0..1.0) rendering obscured the actual workload
difference. User feedback: standard ASH views plot the count of active
sessions, with each wait-event category as a stack layer whose height =
number of backends sampled in that category for the bucket.

Change bucket_stack() to return mean count per bucket (rows per bucket
divided by distinct-sample-timestamps), and set y-limit per subplot to
max(total) + 1 with integer ticks. Linear scale; no normalization.

Effect: pgque/pgq visibly jump from ~1 to ~2 active backends during the
TX phase (the held-xmin session joins, sitting on ClientRead); DELETE-
based systems sit at ~4-5 (their -c 4 consumers plus the producer) and
climb to ~6 during TX.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore(charts): scrub round labels from captions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore(charts): use binary units + update README index

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Nik Samokhvalov <nik@Niks-MacBook-Pro.local>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants