{"id":19458493,"url":"https://github.com/postgrespro/pg-mark","last_synced_at":"2026-01-22T07:33:34.397Z","repository":{"id":179341763,"uuid":"642277891","full_name":"postgrespro/pg-mark","owner":"postgrespro","description":"  Postgres benchmarking framework","archived":false,"fork":false,"pushed_at":"2023-07-07T05:22:16.000Z","size":88,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-10-01T23:57:08.226Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/postgrespro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-18T07:59:42.000Z","updated_at":"2025-04-24T22:58:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"2dfffbf7-a73b-4b27-b02a-d5bf25f7b725","html_url":"https://github.com/postgrespro/pg-mark","commit_stats":null,"previous_names":["postgrespro/pg-mark"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/postgrespro/pg-mark","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/postgrespro%2Fpg-mark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/postgrespro%2Fpg-mark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/postgrespro%2Fpg-mark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/postgrespro%2Fpg-mark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/postgrespro","download_url":"https://codeload.github.com/postgrespro/pg-mark/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/postgrespro%2Fpg-mark/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28658107,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T01:17:37.254Z","status":"online","status_checked_at":"2026-01-22T02:00:07.137Z","response_time":144,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T17:27:19.665Z","updated_at":"2026-01-22T07:33:34.378Z","avatar_url":"https://github.com/postgrespro.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"Postgres Benchmarking Infrastructure\n=====================================\n\n\nThis repository contains scripts and a sample configuration file for\nbenchmarking different PostgreSQL and Postgres Pro versions and flavors.\n\n#### Notice ####\nUsing a dedicated machine is highly recommended at least for minimizing\nbackground/parallel activity.\nAlso it's recommended to disable turbo/boost CPU modes to avoid uncontrollable\nand unpredictable CPU performance fluctuations.\n\nSample usage\n-------------------------------------\n\n0) Prepare local git repository:\n\n       git clone git://git.postgresql.org/git/postgresql.git postgres.git\n\nAnd install prerequisites:\ndocker, bash, wget, git, tar, 7z, ant, default-jdk  \n(optional packages for visualization: xsltproc, r-base-core, r-cran-xml,\nr-cran-ggplot2, r-cran-reshape2)\n\n***\n\n1) Run\n\n       ./prepare-instances.py\n\nto get all the Postgres* instances defined in config.xml ready for\nbenchmarking.\n\nYou can also specify different configuration file or create only selected\ninstances, e.g.:\n\n    ./prepare-instances.py -i pg-src-15 pg-src-master\nRun\n\n    ./prepare-instances.py --help\nto get more information.\n\n***\n\n2) Run\n\n        ./run-benchmarks.py\nto perform all the benchmarks Postgres* defined in config.xml for all\ninstances.\n\nYou'll get benchmark-results.xml with the normalized benchmarking data and\nbenchmark-results/ directory with a raw benchmarks' output.\n\nYou can specify a different configuration file or perform only selected\nbenchmarks for selected instances, e.g.:\n\n    ./run-benchmarks.py -i pg-src-15 pg-src-master pg-src-15 pg-src-master \\\n      pg-src-15 pg-src-master -b pgbench_native pgbench_reference ycsb s64da_tpch\n\nHere the instances repeated to get more trustworthy results for comparison of\nthat instances. The benchmark results will be stored as if the instances were\nnamed \"pg-src-15--1\", \"pg-src-master--1\", \"pg-src-15--2\",\n\"pg-src-master--2\", ...\n\nRun\n\n    ./run-benchmarks.py --help\nto get more information.\n\n***\n\n3) To visualize results, you can use:\n\n       R --no-save \u003c VisualizeResults.R\n(You'll get Rplots.pdf with graphics presenting some benchmarks results.)\nOr\n\n    xsltproc make-html-tables.xsl benchmark-results.xml \u003ebenchmark-results.html\n(You'll get benchmark-results.html with tables presenting the benchmarking data.)\n\n***\n\n4) You can also compare benchmark results for several instances in an\nautomated non-visual way. Run\n\n       ./analyze-benchmarks.py -i 'instance-1-pattern' 'instance-2-pattern'\n\nFor example, to compare results of benchmarking instances shown above, run:\n\n    ./analyze-benchmarks.py -i 'pg-src-master--.*' 'pg-src-15--.*'\n\nThis script can also be used to perform `git bisect` for finding a commit,\nthat changed some metric. E. g.:\n\n    sed \"s|\\(\u003c/pg_instances\u003e\\)|\u003cinstance id='pg-src-probe' type='src' git_commit='$hash' /\u003e\\1|g\" \\\n      config.xml \u003e config-probe.xml\n    time ./prepare-instances.py -c config-probe.xml -i pg-src-probe \u003eprepare.log || exit 125\n    rm benchmark-results.xml || true\n    time ./run-benchmarks.py -c config-probe.xml -i pg-src-probe pg-src-probe pg-src-probe \\\n      pg-src-probe pg-src-probe -b s64da_tpcds\n    ./analyze-benchmarks.py -i 'pg-src-probe--.*' -m s64da_tpcds.query87 -t 2.1 || exit 1\n\n***\n\nConfiguration and data structure\n-------------------------------------\n\nA configuration of postgres instances and benchmarks is defined in a single\nfile config.xml (custom configuration files can also be used). It allows to\nstore the complete configuration of a benchmarking session along with the\nresults (benchmark-results.xml).\n\nThe structure of config.xml yet to be documented, but it's supposed to be\ntransparent and self-explanatory.\n\n\n#### Notice ####\nYou can add private repositories and instance definitions with the following\nextra configuration files:  \nprivate_repositories.xml:\n\n    \u003crepository id=\"pgproee\"\n     url=\"https://user:password@repoee.postgrespro.ru/pgproee-$PG_VERSION/ubuntu $OS_CODENAME main\" /\u003e\n\nprivate_instances.xml:\n\n    \u003cprivate\u003e\n        \u003cinstance id=\"pg-proee-apt-15\" type=\"proapt\" pgpro_edition=\"ent\"\n         repository=\"pgproee\" pg_version=\"15\" /\u003e\n    \u003c/private\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpostgrespro%2Fpg-mark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpostgrespro%2Fpg-mark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpostgrespro%2Fpg-mark/lists"}