Repository navigation
Add the load cases A and B - #12
Merged
Merged
Conversation
rupg-bench load runs the steps of spec/20 section 20.3.1 on the source file: drop_caches, fincore and the timed cat for case A, two reads and the 99 percent check for case B. Then it times the load command in the cgroup runner and records L, R and L / R.
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/load.rshas the steps of spec/20 section 20.3.1. Case A runssyncanddrop_caches, checks withfincorethat the source has 0 resident pages, timescat <source> > /dev/nullasR, drops the caches and checks again. Case B reads the source twice withcat, andfincoremust report at least 99 percent of the pages resident. Below 99 percent, the run does the steps of case A and records case A with a note.fincorereports 0, and the result records how many drops each check needed. If pages stay after 5 drops, the run fails, because then another process holds the file or the file is on tmpfs.rupg-bench load --case a|b --source FILE (--name N | --attach PATH | --unit UNIT) [--du PATH] [--json] -- COMMANDruns the steps and then times the load command in the cgroup runner of Add the cgroup v2 runner and the measure command #11, so the resources of spec/20 section 20.3.4 are measured over the load. The result hasL,R,L / R, everyfincoreline and the case that was asked for.src/cgroup.rsgetsrun, which starts a command in the cgroup (or outside it, for a client) and measures the interval.measureandloadshare it.rupg-bench load.Test
All runs are on server3 (8 cores, Linux 6.8.0-106-generic) on 7 October 2026, with DuckDB 1.5.6 from
machines/install/duckdb.sh. The source is the first file of the partitioned ClickBench data,hits_0.parquet(122446530 bytes, sha256fa134fe101e68324e0de851146fda69624f5cbb707d387141d1c2a88a219a16d), fromhttps://datasets.clickhouse.com/hits_compatible/athena_partitioned/hits_0.parquet. These are smoke runs that show the steps work. They are not baselines: the machine is shared, its load average was near 75, and the file is a 1 percent sample.Case A:
Case B, with
--json.fincorefound all 29895 pages resident after the two reads, and the load read only 13451264 bytes from the device, so the source came from the page cache:The case B load took longer than the case A load because other jobs on the machine took the CPU. This is why these numbers are not baselines.
srvtestpassed on server3: fmt, clippy with-D warnings, and 23 tests, with new tests for thefincoreparser, the resident share,L / Rand the case names.