From 363739d1682f7ee8c31271fb8819330ca173ed55 Mon Sep 17 00:00:00 2001 From: Qian-Cheng-nju <846853688@qq.com> Date: Thu, 11 Dec 2025 18:15:27 +0800 Subject: [PATCH 1/2] docs: Update README of OmniLink MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changes: - Correct database type from DuckDB to SQLite (eval.sqlite) - Update build file description (removed references to util.mill, GitRepo.mill) - Add concurrentqueue and atomic to list of working systems - Fix remaining eval.duckdb → eval.sqlite references --- omnilink/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/omnilink/README.md b/omnilink/README.md index b9be553c..77a69c9b 100644 --- a/omnilink/README.md +++ b/omnilink/README.md @@ -4,7 +4,7 @@ This folder contains build definitions that automate most experiments. For all commands, _run them from the repo root, not here_. That's where `./mill` lives. -The build definitions are in `package.mill`, with dependencies on `util.mill` and `GitRepo.mill`. +The build definitions are in `package.mill`. Everything has been consolidated into a single build file. Note: all system dependencies are installed by the Dockerfile inside `../.devcontainer`. If you use devcontainers, it will "just work". @@ -12,12 +12,12 @@ Otherwise, make sure you have the packages listed there installed, and consider You will use them a lot. Each evaluated system lives in one subfolder. -Currently, `setbench` and `wiredtiger` work. +Currently, `concurrentqueue`, `setbench`, `wiredtiger` and `atomic` work. Note that you will need separate permission to check out a private form of `setbench`. ## Data management -All data is stored in a local DuckDB database named `eval.duckdb`. +All data is stored in a local SQLite database named `eval.sqlite`. It is not committed to source control, and acts as a persistent cache for recorded executions and validation results. You should not need to interact with it directly. @@ -46,10 +46,10 @@ Note that the actual count reflects any and all traces you already have in a giv *Don't try to copy `out/`.* It will just lead to broken paths and frustration. -The `omnilink/eval.duckdb` is a self-contained record of everything you did, including traces and counterexamples. +The `omnilink/eval.sqlite` is a self-contained record of everything you did, including traces and counterexamples. Copy that into the target machines `omnilink/` dir and run the commands you need (like extracting counterexamples). -How to merge different `eval.duckdb` is an open question. +How to merge different `eval.sqlite` is an open question. For best future proofing, add build configs rather than editing existing ones, because the same config name doing different things would be confusing. The system is built so many contradictory configs / builds / etc can coexist under different names. From 748abb8a56677fcfb4571bf83a6c5694f30c3e2a Mon Sep 17 00:00:00 2001 From: Qian-Cheng-nju <846853688@qq.com> Date: Thu, 11 Dec 2025 18:37:01 +0800 Subject: [PATCH 2/2] doc: Add System Prerequisites for README --- omnilink/README.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/omnilink/README.md b/omnilink/README.md index 77a69c9b..36a4d0e0 100644 --- a/omnilink/README.md +++ b/omnilink/README.md @@ -15,6 +15,31 @@ Each evaluated system lives in one subfolder. Currently, `concurrentqueue`, `setbench`, `wiredtiger` and `atomic` work. Note that you will need separate permission to check out a private form of `setbench`. +## System Prerequisites + +### Actual Requirements + +- **Linux** from recent few years. Linux must be running on **bare metal or a VM**; containers on other OS will not work. +- **Nix** installation (see `.devcontainer/devcontainer.json` for setup) + +### System Configuration for rr + +Two system-level configurations are required: + +**1. Performance counter access:** +```bash +sudo sysctl kernel.perf_event_paranoid=1. # <=3 +``` + +**2. AMD Zen CPU workaround (AMD EPYC/Ryzen only):** +```bash +curl -o /tmp/zen_workaround.py https://raw.githubusercontent.com/rr-debugger/rr/master/scripts/zen_workaround.py +sudo modprobe msr +sudo python3 /tmp/zen_workaround.py +``` + +In VMs, run these commands on the host machine. + ## Data management All data is stored in a local SQLite database named `eval.sqlite`.