Repository navigation
Conversation
5 of 17 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #1.
What changes
src/ycsb.rsis the YCSB driver of spec/20 §20.9. It follows the core workload of YCSB: the tableusertablewith ten text fields of 100 bytes, keys from the FNV hash of the record number, and the scrambled zipfian distribution with the constant 0.99. The workloads are A, B, C and F.loadmakes the table and loads--recordsrows withCOPY, then runsVACUUM ANALYZEandCHECKPOINT. The steprunruns each workload for each row of--rowsfor--timeseconds. A row is a client count such as16, or a client count and a pipeline depth such as16x64.src/pg.rsgets a pipeline: up to DEPTH statements wait for their results on one connection, and each has its own Sync, as in the pipeline mode oflibpq.memory.peak, the p50, p95, p99 and p99.9 latency of each operation from a log linear histogram, and the update rate of the hottest key.--sync on|offsetssynchronous_commiton each connection.reports/2026-10-07/c7a1474-server3-ycsb-postgresql-smoke.{md,json}is the report of the smoke run below. Its name and its first line mark it as a smoke run.Test
srvtestpassed on server3. The new unit tests cover the FNV keys, the zipfian skew, the workloads and rows, the histogram, the load rows and the rule for the allowed values of a field after a run. The pipeline ran against PostgreSQL in the smoke run below.Smoke run on server3, 7 October 2026. It is not a baseline. server3 is a shared machine with 8 cores and a load average between 41 and 85 when I read it that day. The run used a second PostgreSQL cluster,
19/ycsbon port 5433 (REL_19_STABLE at7d3d2db7,19beta4), so that it did not touch the TPC-H data in19/main. The command wasrupg-bench ycsb --unit postgresql@19-ycsb --conn "host=/var/run/postgresql port=5433 user=bench dbname=bench" --records 100000 --time 10 --smokewith the default workloads and rows, andsynchronous_commitwasonfrom the server. The report has every setting.The load of 100,000 rows took 43.32 s. No operation failed in any row.
The check finds lost updates. At 13:43 UTC on server3, I added a trigger to
usertablein19/ycsbthat returnsOLDfor 10 percent of the updates, so the update reports one row but does not store the value. Thenrupg-bench ycsb --unit postgresql@19-ycsb --conn ... --steps run --workloads a --rows 1 --time 5 --smokefailed withwrong answers, the rows are not numbers: workload a with 1 clients: 3 fields do not hold their last acknowledged update. After I dropped the trigger, the same command passed with 385 fields checked and 0 wrong.The cost of the sampler. The cgroup runner reads
/proc/<pid>/smaps_rollupof each server process every 100 ms for the Pss. At 13:44 UTC on server3,/usr/bin/time rupg-bench measure --unit postgresql@19-ycsb --idle(14 server processes, 10 s) used 4.58 s and 4.71 s of system CPU in the harness in two tries, and took 74 and 72 samples, not 100. That CPU is in the harness and not in the server cgroup, so the server numbers do not include it, but on a loaded machine it takes CPU from the server. A later change can read the Pss less often.A source that is missing. spec/20 §20.9 cites
../2140/bench/ycsb/04-the-driver.md. That file is not in the checkouts here, so the driver follows the YCSB core workload and the spec text.No line of #1 is complete with this PR. The YCSB baseline line needs the
oltpmachine.