Repository navigation
Conversation
rupg-bench tpcc builds the schema with HammerDB 6.0, runs TPROC-C with stored procedures, and runs a driver in the harness that sends plain prepared statements. Each run measures the server cgroup over the counted minutes and checks the consistency conditions 1 to 4 of clause 3.3.2. The step check only checks them. rupg-bench fixed-set writes the YCSB and TPC-C parts of the fixed set of spec/21 section 21.14. instructions sends a server query to psql on stdin, so a long set fits, and takes --password-file.
This was referenced Oct 7, 2026
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
machines/install/hammerdb.shinstalls HammerDB 6.0 from the pin, checks its sha256 and checks that the PostgreSQL library loads.machines/install/tpcc-roles.sh [CLUSTER]makes the rolehammerdb, writes a random password to/etc/rupg-bench/tpcc.pass(root, mode 0600) and allows the roleshammerdbandtpccwith a password on the Unix socket. HammerDB logs in with a password, so these run first.src/tpcc.rsandrupg-bench tpccare the TPC-C driver of spec/20 §20.8. The stepbuilddrops the databasetpccand builds--warehouseswith HammerDB. The stepproceduresruns HammerDB TPROC-C with its stored procedures. The stepstatementsruns a driver in the harness on the same schema, because HammerDB has no form with plain statements for PostgreSQL.--rampupminutes and counts--durationminutes for each count of--vuand each value of--sync. NOPM is the change ofsum(d_next_o_id)over the counted minutes. The server cgroup is measured over the same minutes, with the idle base first. Each row has NOPM per core, the server CPU and the device write bytes for each New-Order,memory.peak, the latency quantiles of each transaction (statements) or the HammerDB time profile (procedures), and the sync bound0.45 x 60 x T / swith thefdatasyncp50 next to the data directory.checkonly checks them.********in its place in the log and in the result. The password is never on a command line: the HammerDB script reads the file, andpsqlgets it inPGPASSWORD.rupg-bench fixed-set --out DIRwrites the YCSB and TPC-C parts of the fixed set of spec/21 §21.14:ycsb/read1000.sqlwith 1,000 point reads of scrambled zipfian keys, andtpcc/neword100.sqlwith 100 New-Orders in plain statements.rupg-bench instructionsnow gives the query topsqlon its standard input, not with-c. The set of 100 New-Orders is 432,299 bytes, which is over the limit of 128 KiB that Linux sets on one argument. psql now sends each statement as its own message, as a driver does. For a set of one statement, such as a ClickBench or TPC-H query, the server gets the same message as before.--password-filegivespsqla password.reports/2026-10-07/b41f7e63-server3-*are the reports of the smoke runs below. Their names and their first line mark them as smoke runs.Test
srvtestpassed on server3: clippy is clean and 61 tests pass. The new tests cover NURand and the last names, the money and array values, the HammerDB scripts and the parsing of its output and time profile, and the 5 + 2n statements of each New-Order of the fixed set.Smoke runs on server3, 7 October 2026, 13:20 to 13:36 UTC. These are not baselines. server3 is a shared machine with 8 cores, and its load average was 63 at the start. The server is the cluster
19/ycsbon port 5433, PostgreSQL REL_19_STABLE at7d3d2db7(19beta4). The script ran withRUPG_BENCH_COMMIT=b41f7e63, the commit of this branch before the rebase:The build of 2 warehouses took 298.9 s, and the
fdatasyncp50 was 1674.7 µs.The statement form had 0 errors and 0 retries. With 4 terminals and 1 counted minute these numbers only show that both forms run and pass the checks.
Then the same script counted the instructions of the two new parts of the fixed set, on the YCSB table of 100,000 rows in the database
benchand on the TPC-C database that the build made:SELECT 1)The TPC-C base is higher because the role
tpcclogs in with a SCRAM password. Each run of the New-Order set adds 100 orders, and the check after the three runs found 0 failed conditions. The first YCSB run is 4 times the others on this shared machine, so these counts are not a ratchet.The check finds a broken database. At 13:17 UTC, with a build of this branch from a few minutes before the commit, I ran
UPDATE warehouse SET w_ytd = w_ytd + 1 WHERE w_id = 1intpcc. Thenrupg-bench tpcc ... --steps checkprintedconditions 1 to 4, 1 failuresand failed withbefore the runs: 1 units fail the consistency conditions. After the reverse update, the same command passed with 0 failures.Differences from the spec and from TPC-C.
neworddoes not roll back on the unused item 100001. It commits the order with order lines that have a NULL amount. The statement form rolls back, as clause 2.4.2.3 says.With this PR the four parts of the fixed set of spec/21 §21.14 run on server3: ClickBench on 1,000,000 rows (#15), TPC-H at SF0.1 (#16), and the YCSB and TPC-C sets here. So this PR completes the instruction runner line of #1.
ratchet.tomlstays empty until a dedicated runner exists. The TPC-C baseline line stays open because it needs theoltpmachine.